diff --git a/.code-samples.meilisearch.yaml b/.code-samples.meilisearch.yaml index dcc2ec5e2a..a30a9c3a18 100644 --- a/.code-samples.meilisearch.yaml +++ b/.code-samples.meilisearch.yaml @@ -2,7 +2,7 @@ # Every example written here will be automatically fetched by # the documentation on build --- -## BEGIN /references/api +## BEGIN /reference/api # get_indexes_indexUid get_one_index_1: |- curl \ @@ -850,7 +850,7 @@ get_health_1: |- get_version_1: |- curl \ -X GET 'MEILISEARCH_URL/version' -## END /references/api +## END /reference/api distinct_attribute_guide_1: |- curl \ @@ -1579,3 +1579,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..861842c9af 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). @@ -30,22 +30,32 @@ jobs: steps: - uses: actions/checkout@v6 + - uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" + - name: Install dependencies - run: npm ci + run: npm install - 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 steps: - uses: actions/checkout@v6 + - uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" + - name: Install dependencies - run: npm ci + run: npm install - 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..8dc66282a5 --- /dev/null +++ b/.github/workflows/openapi-code-samples-check.yml @@ -0,0 +1,50 @@ +# 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 + + - uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" + + - name: Install dependencies + run: npm install + + - 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 + + - uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" + + - name: Install dependencies + run: npm install + + - 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..7a03bce68c 100644 --- a/.github/workflows/post-deployment.yml +++ b/.github/workflows/post-deployment.yml @@ -4,15 +4,22 @@ 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' + +concurrency: + group: post-deployment + cancel-in-progress: false 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,29 +27,145 @@ 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 + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" - name: Install dependencies 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@v4 + with: + node-version: "20" + cache: "npm" + + - name: Install dependencies + run: npm install + + - 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: [build-code-samples, fetch-openapi-file] + 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@v4 + with: + node-version: "20" + cache: "npm" + + - name: Install dependencies + run: npm install + + - name: Generate Mintlify OpenAPI file + run: npm run generate-mintlify-openapi-file + + - name: Validate OpenAPI with Mintlify CLI + run: npx mint 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 33fc8b20ef..5af6c6f988 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 } } @@ -17823,7 +19387,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": [ @@ -17836,20 +19400,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": [ @@ -17974,7 +19524,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" @@ -19223,14 +20773,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": { @@ -19511,7 +21054,7 @@ "taskUid": { "type": "integer", "format": "u-int32", - "description": "Unique sequential identifier of the task", + "description": "Unique sequential identifier of the task.", "minimum": 0 }, "indexUid": { @@ -19519,27 +21062,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." } } }, @@ -19547,8 +21090,7 @@ "type": "object", "description": "Request body for swapping two indexes", "required": [ - "indexes", - "rename" + "indexes" ], "properties": { "indexes": { @@ -19556,7 +21098,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", @@ -19753,7 +21295,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": [ @@ -19767,9 +21309,6 @@ "UpdateStderrLogs": { "type": "object", "description": "Request body for updating stderr log configuration", - "required": [ - "target" - ], "properties": { "target": { "type": "string", @@ -19817,7 +21356,7 @@ }, "WebhookResults": { "type": "object", - "description": "Response containing a list of all registered webhooks", + "description": "Response containing a list of all registered webhooks.", "required": [ "results" ], @@ -19827,7 +21366,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." } } }, @@ -19840,7 +21379,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": { @@ -19848,7 +21387,7 @@ "object", "null" ], - "description": "HTTP headers to include in webhook requests", + "description": "HTTP headers to include in webhook requests.", "additionalProperties": { "type": "string" }, @@ -19865,7 +21404,7 @@ "allOf": [ { "$ref": "#/components/schemas/WebhookSettings", - "description": "Webhook settings" + "description": "URL and headers. Authorization header values are redacted in the response." }, { "type": "object", @@ -19877,16 +21416,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", @@ -19899,7 +21438,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```" } } }, @@ -19920,13 +21459,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", @@ -19946,7 +21493,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..61af41ebcf 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", @@ -440,7 +440,7 @@ "guides/relevancy/ordering_ranking_rules", "guides/relevancy/interpreting_ranking_scores" ] - }, + }, { "group": "Deployment", "pages": [ @@ -955,15 +955,299 @@ }, { "source": "/reference/api/tasks.html#delete-task", - "destination": "/reference/api/tasks#delete-tasks" + "destination": "/reference/api/async-task-management/delete-tasks" }, { "source": "/reference/api/tasks#delete-task", - "destination": "/reference/api/tasks#delete-tasks" + "destination": "/reference/api/async-task-management/delete-tasks" + }, + { + "source": "/reference/api/search", + "destination": "/reference/api/search/search-with-post" + }, + { + "source": "/reference/api/documents", + "destination": "/reference/api/documents/list-documents-with-get" + }, + { + "source": "/reference/api/tasks", + "destination": "/reference/api/async-task-management/list-tasks" + }, + { + "source": "/reference/api/batches", + "destination": "/reference/api/async-task-management/list-batches" + }, + { + "source": "/reference/api/settings", + "destination": "/reference/api/settings/list-all-settings" + }, + { + "source": "/reference/api/indexes", + "destination": "/reference/api/settings/list-all-indexes" + }, + { + "source": "/reference/api/similar", + "destination": "/reference/api/similar-documents/get-similar-documents-with-post" + }, + { + "source": "/reference/api/webhook", + "destination": "/reference/api/webhooks/list-webhooks" + }, + { + "source": "/reference/api/experimental_features", + "destination": "/reference/api/experimental-features/list-experimental-features" + }, + { + "source": "/reference/api/tasks#get-one-task", + "destination": "/reference/api/async-task-management/get-task" + }, + { + "source": "/reference/api/tasks#delete-tasks", + "destination": "/reference/api/async-task-management/delete-tasks" + }, + { + "source": "/reference/api/tasks#response", + "destination": "/reference/api/async-task-management/list-tasks" + }, + { + "source": "/reference/api/keys", + "destination": "/reference/api/keys/list-api-keys" + }, + { + "source": "/reference/api/keys#get-one-key", + "destination": "/reference/api/keys/get-api-key" + }, + { + "source": "/reference/api/health", + "destination": "/reference/api/health/get-health" + }, + { + "source": "/reference/api/dump", + "destination": "/reference/api/backups/create-dump" + }, + { + "source": "/reference/api/facet_search", + "destination": "/reference/api/facet-search/search-in-facets" + }, + { + "source": "/reference/api/multi_search", + "destination": "/reference/api/search/perform-a-multi-search" + }, + { + "source": "/reference/api/snapshots", + "destination": "/reference/api/backups/create-snapshot" + }, + { + "source": "/reference/api/version", + "destination": "/reference/api/version/get-version" + }, + { + "source": "/reference/api/version#version-object", + "destination": "/reference/api/version/get-version" + }, + { + "source": "/reference/api/chats", + "destination": "/reference/api/chats/update-chat" + }, + { + "source": "/reference/api/chats#prompts", + "destination": "/reference/api/chats/update-chat" + }, + { + "source": "/reference/api/webhooks", + "destination": "/reference/api/webhooks/list-webhooks" + }, + { + "source": "/reference/api/network", + "destination": "/reference/api/network/get-network" + }, + { + "source": "/reference/api/keys#actions", + "destination": "/reference/api/keys/create-api-key#body-actions" + }, + { + "source": "/reference/api/keys#delete-a-key", + "destination": "/reference/api/keys/delete-api-key" + }, + { + "source": "/reference/api/tasks#cancel-tasks", + "destination": "/reference/api/async-task-management/cancel-tasks" + }, + { + "source": "/reference/api/tasks#query-parameters", + "destination": "/reference/api/async-task-management/list-tasks" + }, + { + "source": "/reference/api/tasks#status", + "destination": "/reference/api/async-task-management/get-task" + }, + { + "source": "/reference/api/tasks#type", + "destination": "/reference/api/async-task-management/get-task" + }, + { + "source": "/reference/api/tasks#canceledby", + "destination": "/reference/api/async-task-management/list-tasks" + }, + { + "source": "/reference/api/tasks#uid", + "destination": "/reference/api/async-task-management/get-task" + }, + { + "source": "/reference/api/settings#update-searchable-attributes", + "destination": "/reference/api/settings/update-searchableattributes" + }, + { + "source": "/reference/api/settings#filterable-attributes", + "destination": "/reference/api/settings/get-filterableattributes" + }, + { + "source": "/reference/api/settings#stop-words", + "destination": "/reference/api/settings/get-stopwords" + }, + { + "source": "/reference/api/settings#update-typo-tolerance-settings", + "destination": "/reference/api/settings/update-typotolerance" + }, + { + "source": "/reference/api/settings#reset-searchable-attributes", + "destination": "/reference/api/settings/delete-searchableattributes" + }, + { + "source": "/reference/api/settings#composite-embedders", + "destination": "/reference/api/settings/get-embedders" + }, + { + "source": "/reference/api/settings#searchable-attributes", + "destination": "/reference/api/settings/get-searchableattributes" + }, + { + "source": "/reference/api/settings#displayed-attributes", + "destination": "/reference/api/settings/get-displayedattributes" + }, + { + "source": "/reference/api/settings#sortable-attributes", + "destination": "/reference/api/settings/get-sortableattributes" + }, + { + "source": "/reference/api/settings#update-displayed-attributes", + "destination": "/reference/api/settings/update-displayedattributes" + }, + { + "source": "/reference/api/settings#update-filterable-attributes", + "destination": "/reference/api/settings/update-filterableattributes" + }, + { + "source": "/reference/api/settings#update-sortable-attributes", + "destination": "/reference/api/settings/update-sortableattributes" + }, + { + "source": "/reference/api/settings#update-ranking-rules", + "destination": "/reference/api/settings/update-rankingrules" + }, + { + "source": "/reference/api/settings#synonyms", + "destination": "/reference/api/settings/get-synonyms" + }, + { + "source": "/reference/api/settings#update-synonyms", + "destination": "/reference/api/settings/update-synonyms" + }, + { + "source": "/reference/api/settings#dictionary", + "destination": "/reference/api/settings/get-dictionary" + }, + { + "source": "/reference/api/settings#faceting", + "destination": "/reference/api/settings/get-faceting" + }, + { + "source": "/reference/api/settings#update-faceting-settings", + "destination": "/reference/api/settings/update-facetsearch" + }, + { + "source": "/reference/api/settings#pagination", + "destination": "/reference/api/settings/update-pagination" + }, + { + "source": "/reference/api/settings#pagination-object", + "destination": "/reference/api/settings/update-pagination" + }, + { + "source": "/reference/api/settings#typo-tolerance", + "destination": "/reference/api/settings/get-typotolerance" + }, + { + "source": "/reference/api/settings#typo-tolerance-object", + "destination": "/reference/api/settings/get-typotolerance" + }, + { + "source": "/reference/api/settings#update-settings", + "destination": "/reference/api/settings/update-all-settings" + }, + { + "source": "/reference/api/settings#update-typo-tolerance", + "destination": "/reference/api/settings/update-typotolerance" + }, + { + "source": "/reference/api/settings#distinct-attribute", + "destination": "/reference/api/settings/get-distinctattribute" + }, + { + "source": "/reference/api/settings#update-distinct-attribute", + "destination": "/reference/api/settings/update-distinctattribute" + }, + { + "source": "/reference/api/settings#facet-search", + "destination": "/reference/api/settings/get-facetsearch" + }, + { + "source": "/reference/api/settings#prefix-search", + "destination": "/reference/api/settings/get-prefix-search" + }, + { + "source": "/reference/api/settings#localized-attributes", + "destination": "/reference/api/settings/get-localized-attributes" + }, + { + "source": "/reference/api/settings#separator-tokens", + "destination": "/reference/api/settings/get-separatortokens" + }, + { + "source": "/reference/api/settings#body", + "destination": "/reference/api/settings/update-all-settings" + }, + { + "source": "/reference/api/documents#update-documents-with-function", + "destination": "/reference/api/documents/edit-documents-by-function" + }, + { + "source": "/reference/api/facet_search#body", + "destination": "/reference/api/facet-search/search-in-facets" + }, + { + "source": "/reference/api/documents/clear-all-documents", + "destination": "/reference/api/documents/delete-all-documents" + }, + { + "source": "/reference/api/settings/update-all", + "destination": "/reference/api/settings/update-all-settings" + }, + { + "source": "/reference/api/snapshots/create-snapshot", + "destination": "/reference/api/backups/create-snapshot" + }, + { + "source": "/reference/api/headers#content-type", + "destination": "/reference/api/headers" + }, + { + "source": "/reference/api/headers#search-metadata", + "destination": "/reference/api/headers" }, { "source": "/reference", - "destination": "/reference/api/overview" + "destination": "/reference/api/authorization" }, { "source": "/guides/deployment/gcp", diff --git a/guides/computing_hugging_face_embeddings_gpu.mdx b/guides/computing_hugging_face_embeddings_gpu.mdx index c9470c3aff..d5e5d44fe3 100644 --- a/guides/computing_hugging_face_embeddings_gpu.mdx +++ b/guides/computing_hugging_face_embeddings_gpu.mdx @@ -74,7 +74,7 @@ Meilisearch will return a summarized task object and place your request on the t } ``` -Use the task object's `taskUid` to [monitor the task status](/reference/api/tasks#get-one-task). The Hugging Face embedder will be ready to use once the task is completed. +Use the task object's `taskUid` to [monitor the task status](/reference/api/async-task-management/get-task). The Hugging Face embedder will be ready to use once the task is completed. ## Conclusion diff --git a/guides/embedders/bedrock.mdx b/guides/embedders/bedrock.mdx index 0621ab5019..5c92e94254 100644 --- a/guides/embedders/bedrock.mdx +++ b/guides/embedders/bedrock.mdx @@ -16,7 +16,7 @@ To follow this guide, you'll need: ## Setting up Meilisearch -To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings) for more details on updating the embedder settings. +To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings/list-all-settings) for more details on updating the embedder settings. ### Text embeddings @@ -277,7 +277,7 @@ Once you've configured the embedder settings, Meilisearch will automatically gen Please note that AWS Bedrock has rate limiting, which is managed by Meilisearch. The indexation process may take some time depending on your AWS account limits, but Meilisearch will handle it with a retry strategy. -It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/tasks). +It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/async-task-management/list-tasks). ## Testing semantic search @@ -308,4 +308,4 @@ You can use the Meilisearch API or client libraries to perform searches and retr By following this guide, you should now have Meilisearch set up with AWS Bedrock embedding, enabling you to leverage semantic search capabilities in your application. Meilisearch's auto-batching and efficient handling of embeddings make it a powerful choice for integrating semantic search into your project. -To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings). +To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings/list-all-settings). diff --git a/guides/embedders/cloudflare.mdx b/guides/embedders/cloudflare.mdx index b5390fcc2d..c8bbd0b47e 100644 --- a/guides/embedders/cloudflare.mdx +++ b/guides/embedders/cloudflare.mdx @@ -17,7 +17,7 @@ To follow this guide, you'll need: ## Setting up Meilisearch -To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings) for more details on updating the embedder settings. +To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings/list-all-settings) for more details on updating the embedder settings. Cloudflare Worker AI offers the following embedding models: @@ -63,7 +63,7 @@ Once you've configured the embedder settings, Meilisearch will automatically gen Please note that Cloudflare may have rate limiting, which is managed by Meilisearch. If you have a free account, the indexation process may take some time, but Meilisearch will handle it with a retry strategy. -It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/tasks). +It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/async-task-management/list-tasks). ## Testing semantic search @@ -93,4 +93,4 @@ You can use the Meilisearch API or client libraries to perform searches and retr By following this guide, you should now have Meilisearch set up with Cloudflare Worker AI embedding, enabling you to leverage semantic search capabilities in your application. Meilisearch's auto-batching and efficient handling of embeddings make it a powerful choice for integrating semantic search into your project. -To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings). +To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings/list-all-settings). diff --git a/guides/embedders/cohere.mdx b/guides/embedders/cohere.mdx index dc8c51aca5..c5c6103d01 100644 --- a/guides/embedders/cohere.mdx +++ b/guides/embedders/cohere.mdx @@ -17,7 +17,7 @@ To follow this guide, you'll need: ## Setting up Meilisearch -To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings) for more details on updating the embedder settings. +To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings/list-all-settings) for more details on updating the embedder settings. Cohere offers multiple embedding models: @@ -66,7 +66,7 @@ Once you've configured the embedder settings, Meilisearch will automatically gen Please note that most third-party tools have rate limiting, which is managed by Meilisearch. If you have a free account, the indexation process may take some time, but Meilisearch will handle it with a retry strategy. -It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](https://www.meilisearch.com/docs/reference/api/tasks). +It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/async-task-management/list-tasks). ## Testing semantic search @@ -96,4 +96,4 @@ You can use the Meilisearch API or client libraries to perform searches and retr By following this guide, you should now have Meilisearch set up with Cohere embedding, enabling you to leverage semantic search capabilities in your application. Meilisearch's auto-batching and efficient handling of embeddings make it a powerful choice for integrating semantic search into your project. -To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings). +To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings/list-all-settings). diff --git a/guides/embedders/gemini.mdx b/guides/embedders/gemini.mdx index 893d4e3bd3..846332598c 100644 --- a/guides/embedders/gemini.mdx +++ b/guides/embedders/gemini.mdx @@ -12,7 +12,7 @@ To follow this guide, you'll need: ## Setting up Meilisearch -To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings) for more details on updating the embedder settings. +To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings/list-all-settings) for more details on updating the embedder settings. While using Gemini to generate embeddings, you'll need to use the model `gemini-embedding-001`. Unlike some other services, Gemini currently offers only one embedding model. @@ -66,7 +66,7 @@ Once you've configured the embedder settings, Meilisearch will automatically gen Please note that most third-party tools have rate limiting, which is managed by Meilisearch. If you have a free account, the indexation process may take some time, but Meilisearch will handle it with a retry strategy. -It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](https://www.meilisearch.com/docs/reference/api/tasks). +It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/async-task-management/list-tasks). ## Testing semantic search @@ -96,4 +96,4 @@ You can use the Meilisearch API or client libraries to perform searches and retr By following this guide, you should now have Meilisearch set up with Gemini embedding, enabling you to leverage semantic search capabilities in your application. Meilisearch's auto-batching and efficient handling of embeddings make it a powerful choice for integrating semantic search into your project. -To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings). +To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings/list-all-settings). diff --git a/guides/embedders/huggingface.mdx b/guides/embedders/huggingface.mdx index 34362695ca..3d59247428 100644 --- a/guides/embedders/huggingface.mdx +++ b/guides/embedders/huggingface.mdx @@ -50,7 +50,7 @@ In this configuration: - `request`: defines the structure and parameters of the request Meilisearch will send to the embedder - `response`: defines the structure of the embedder's response -Once you've configured the embedder, Meilisearch will automatically generate embeddings for your documents. Monitor the task using the Cloud UI or the [get task endpoint](/reference/api/tasks). +Once you've configured the embedder, Meilisearch will automatically generate embeddings for your documents. Monitor the task using the Cloud UI or the [get task endpoint](/reference/api/async-task-management/list-tasks). This example uses [BAAI/bge-small-en-v1.5](https://huggingface.co/BAAI/bge-small-en-v1.5) as its model, but Hugging Face offers [other options that may fit your dataset better](https://ui.endpoints.huggingface.co/catalog?task=sentence-embeddings). @@ -81,4 +81,4 @@ In this request: You have set up with an embedder using Hugging Face Inference Endpoints. This allows you to use pure semantic search capabilities in your application. -Consult the [embedder setting documentation](/reference/api/settings) for more information on other embedder configuration options. +Consult the [embedder setting documentation](/reference/api/settings/list-all-settings) for more information on other embedder configuration options. diff --git a/guides/embedders/mistral.mdx b/guides/embedders/mistral.mdx index dfa7d2d654..d09ac6c92e 100644 --- a/guides/embedders/mistral.mdx +++ b/guides/embedders/mistral.mdx @@ -17,7 +17,7 @@ To follow this guide, you'll need: ## Setting up Meilisearch -To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings) for more details on updating the embedder settings. +To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings/list-all-settings) for more details on updating the embedder settings. While using Mistral to generate embeddings, you'll need to use the model `mistral-embed`. Unlike some other services, Mistral currently offers only one embedding model. @@ -61,7 +61,7 @@ Once you've configured the embedder settings, Meilisearch will automatically gen Please note that most third-party tools have rate limiting, which is managed by Meilisearch. If you have a free account, the indexation process may take some time, but Meilisearch will handle it with a retry strategy. -It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/tasks) +It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/async-task-management/list-tasks) ## Testing semantic search @@ -91,4 +91,4 @@ You can use the Meilisearch API or client libraries to perform searches and retr By following this guide, you should now have Meilisearch set up with Mistral embedding, enabling you to leverage semantic search capabilities in your application. Meilisearch's auto-batching and efficient handling of embeddings make it a powerful choice for integrating semantic search into your project. -To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings). +To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings/list-all-settings). diff --git a/guides/embedders/openai.mdx b/guides/embedders/openai.mdx index b9369aa1c3..32ee07630e 100644 --- a/guides/embedders/openai.mdx +++ b/guides/embedders/openai.mdx @@ -17,7 +17,7 @@ To follow this guide, you'll need: ## Setting up Meilisearch -To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings) for more details on updating the embedder settings. +To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings/list-all-settings) for more details on updating the embedder settings. OpenAI offers three main embedding models: @@ -51,7 +51,7 @@ Once you've configured the embedder settings, Meilisearch will automatically gen Please note that OpenAI has rate limiting, which is managed by Meilisearch. If you have a free account, the indexation process may take some time, but Meilisearch will handle it with a retry strategy. -It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/tasks) +It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/async-task-management/list-tasks) ## Testing semantic search @@ -81,4 +81,4 @@ You can use the Meilisearch API or client libraries to perform searches and retr By following this guide, you should now have Meilisearch set up with OpenAI embedding, enabling you to leverage semantic search capabilities in your application. Meilisearch's auto-batching and efficient handling of embeddings make it a powerful choice for integrating semantic search into your project. -To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings). +To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings/list-all-settings). diff --git a/guides/embedders/voyage.mdx b/guides/embedders/voyage.mdx index e137b1de93..caae094eb6 100644 --- a/guides/embedders/voyage.mdx +++ b/guides/embedders/voyage.mdx @@ -17,7 +17,7 @@ To follow this guide, you'll need: ## Setting up Meilisearch -To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings) for more details on updating the embedder settings. +To set up an embedder in Meilisearch, you need to configure it to your settings. You can refer to the [Meilisearch documentation](/reference/api/settings/list-all-settings) for more details on updating the embedder settings. Voyage AI offers the following embedding models: @@ -66,7 +66,7 @@ Once you've configured the embedder settings, Meilisearch will automatically gen Please note that most third-party tools have rate limiting, which is managed by Meilisearch. If you have a free account, the indexation process may take some time, but Meilisearch will handle it with a retry strategy. -It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/tasks). +It's recommended to monitor the tasks queue to ensure everything is running smoothly. You can access the tasks queue using the Cloud UI or the [Meilisearch API](/reference/api/async-task-management/list-tasks). ## Testing semantic search @@ -96,4 +96,4 @@ You can use the Meilisearch API or client libraries to perform searches and retr By following this guide, you should now have Meilisearch set up with Voyage AI embedding, enabling you to leverage semantic search capabilities in your application. Meilisearch's auto-batching and efficient handling of embeddings make it a powerful choice for integrating semantic search into your project. -To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings). +To explore further configuration options for embedders, consult the [detailed documentation about the embedder setting possibilities](/reference/api/settings/list-all-settings). diff --git a/guides/front_end/pagination.mdx b/guides/front_end/pagination.mdx index 59a98c747d..4935cbef2d 100644 --- a/guides/front_end/pagination.mdx +++ b/guides/front_end/pagination.mdx @@ -13,7 +13,7 @@ There are many UI patterns that help your users navigate through search results. Other solutions, such as [creating a page selector](/guides/front_end/pagination#numbered-page-selectors) allowing users to jump to any search results page, make use of `hitsPerPage` and `page` to obtain the exhaustive total number of matched documents. These tend to be less efficient and may result in decreased performance. -Whatever UI pattern you choose, there is a limited maximum number of search results Meilisearch will return for any given query. You can use [the `maxTotalHits` index setting](/reference/api/settings#pagination) to configure this, but be aware that higher limits will negatively impact search performance. +Whatever UI pattern you choose, there is a limited maximum number of search results Meilisearch will return for any given query. You can use [the `maxTotalHits` index setting](/reference/api/settings/update-pagination) to configure this, but be aware that higher limits will negatively impact search performance. Setting `maxTotalHits` to a value higher than the default will negatively impact search performance. Setting `maxTotalHits` to values over `20000` may result in queries taking seconds to complete. @@ -44,7 +44,7 @@ To implement this interface in a website or application, we make our queries wit #### `limit` and `offset` -"Previous" and "Next" buttons can be implemented using the [`limit`](/reference/api/search#limit) and [`offset`](/reference/api/search#offset) search parameters. +"Previous" and "Next" buttons can be implemented using the [`limit`](/reference/api/search/search-with-post#body-limit) and [`offset`](/reference/api/search/search-with-post#body-offset) search parameters. `limit` sets the size of a page. If you set `limit` to `10`, Meilisearch's response will contain a maximum of 10 search results. `offset` skips a number of search results. If you set `offset` to `20`, Meilisearch's response will skip the first 20 search results. @@ -159,7 +159,7 @@ Calculating the total amount of search results for a query is a resource-intensi By default, Meilisearch queries only return `estimatedTotalHits`. This value is likely to change as a user navigates search results and should not be used to create calculate the number of search result pages. -When your query contains either [`hitsPerPage`](/reference/api/search#number-of-results-per-page), [`page`](/reference/api/search#page), or both these search parameters, Meilisearch returns `totalHits` and `totalPages` instead of `estimatedTotalHits`. `totalHits` contains the exhaustive number of results for that query, and `totalPages` contains the exhaustive number of pages of search results for the same query: +When your query contains either [`hitsPerPage`](/reference/api/search/search-with-post#response-one-of-0-hits-per-page), [`page`](/reference/api/search/search-with-post#response-one-of-0-page), or both these search parameters, Meilisearch returns `totalHits` and `totalPages` instead of `estimatedTotalHits`. `totalHits` contains the exhaustive number of results for that query, and `totalPages` contains the exhaustive number of pages of search results for the same query: ```json { diff --git a/guides/front_end/search_bar_for_docs.mdx b/guides/front_end/search_bar_for_docs.mdx index 25a1a5327e..8ee46911cc 100644 --- a/guides/front_end/search_bar_for_docs.mdx +++ b/guides/front_end/search_bar_for_docs.mdx @@ -156,7 +156,7 @@ The `hostUrl` and the `apiKey` fields are the credentials of the Meilisearch ins These three fields are mandatory, but more [optional fields are available](https://github.com/meilisearch/vuepress-plugin-meilisearch#customization) to customize your search bar. -Since the configuration file is public, we strongly recommend providing a key that can only access [the search endpoint](/reference/api/search) , such as the `Default Search API Key`, in a production environment. +Since the configuration file is public, we strongly recommend providing a key that can only access [the search endpoint](/reference/api/search/search-with-post) , such as the `Default Search API Key`, in a production environment. Read more about [Meilisearch security](/learn/security/basic_security). diff --git a/guides/laravel_multitenancy.mdx b/guides/laravel_multitenancy.mdx index 6647dfc2cf..529bb56788 100644 --- a/guides/laravel_multitenancy.mdx +++ b/guides/laravel_multitenancy.mdx @@ -12,7 +12,7 @@ This guide requires: - A Laravel 10 application with [Laravel Scout](https://laravel.com/docs/10.x/scout) configured to use the `meilisearch` driver - A Meilisearch server running — see our [quick start](/learn/getting_started/cloud_quick_start) - A search API key — available in your Meilisearch dashboard -- A search API key UID — retrieve it using the [keys endpoints](/reference/api/keys) +- A search API key UID — retrieve it using the [keys endpoints](/reference/api/keys/list-api-keys) Prefer self-hosting? Read our [installation guide](/learn/self_hosted/install_meilisearch_locally). diff --git a/guides/laravel_scout.mdx b/guides/laravel_scout.mdx index ba8089f08e..14af52d782 100644 --- a/guides/laravel_scout.mdx +++ b/guides/laravel_scout.mdx @@ -184,9 +184,9 @@ You built an example application to demonstrate how to use Meilisearch with Lara This demo application uses the following features: -- [Multi-search](/reference/api/multi_search) (search across multiple indexes) +- [Multi-search](/reference/api/search/perform-a-multi-search) (search across multiple indexes) - [Multi-tenancy](/learn/security/multitenancy_tenant_tokens) - [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/guides/multitenancy_nodejs.mdx b/guides/multitenancy_nodejs.mdx index 025a04170a..d7f6c20626 100644 --- a/guides/multitenancy_nodejs.mdx +++ b/guides/multitenancy_nodejs.mdx @@ -16,7 +16,7 @@ In Meilisearch, you might have one index containing data belonging to many disti - [Meilisearch JavaScript SDK](/learn/resources/sdks) - A Meilisearch server running — see our [quick start](/learn/getting_started/cloud_quick_start) - A search API key — available in your Meilisearch dashboard -- A search API key UID — retrieve it using the [keys endpoints](/reference/api/keys) +- A search API key UID — retrieve it using the [keys endpoints](/reference/api/keys/list-api-keys) Prefer self-hosting? Read our [installation guide](/learn/self_hosted/install_meilisearch_locally). diff --git a/guides/ruby_on_rails_quick_start.mdx b/guides/ruby_on_rails_quick_start.mdx index 53abc0ad3f..72b613b084 100644 --- a/guides/ruby_on_rails_quick_start.mdx +++ b/guides/ruby_on_rails_quick_start.mdx @@ -122,4 +122,4 @@ We also provide resources to help you quickly build your own [frontend interface ## Next steps -When you're ready to use your own data, make sure to configure your [index settings](/reference/api/settings) first to follow [best practices](/learn/indexing/indexing_best_practices). For a full configuration example, see the [meilisearch-rails gem README](https://github.com/meilisearch/meilisearch-rails?tab=readme-ov-file#%EF%B8%8F-settings). +When you're ready to use your own data, make sure to configure your [index settings](/reference/api/settings/list-all-settings) first to follow [best practices](/learn/indexing/indexing_best_practices). For a full configuration example, see the [meilisearch-rails gem README](https://github.com/meilisearch/meilisearch-rails?tab=readme-ov-file#%EF%B8%8F-settings). diff --git a/guides/vercel.mdx b/guides/vercel.mdx index 06e5ac6919..f28098dc9a 100644 --- a/guides/vercel.mdx +++ b/guides/vercel.mdx @@ -75,7 +75,7 @@ Use the `Default Admin API Key`, to control who can access or create new documen #### Search API key -Use the `Default Search API Key` to access the [search route](/reference/api/search). This is the one you want to use in your front end. +Use the `Default Search API Key` to access the [search route](/reference/api/search/search-with-post). This is the one you want to use in your front end. The Search and Admin API keys are automatically added to Vercel along with the Meilisearch URL. For more information on the other default keys, consult the [security documentation](/learn/security/basic_security#obtaining-api-keys). @@ -111,4 +111,4 @@ Use the [Meilisearch Cloud dashboard](https://cloud.meilisearch.com/projects/?ut Check out the [quick start guide](/learn/self_hosted/getting_started_with_self_hosted_meilisearch#add-documents) for a short introduction on how to use Meilisearch. We also provide many [SDKs and tools](/learn/resources/sdks), so you can use Meilisearch in your favorite language or framework. -You are now ready to [start searching](/reference/api/search)! +You are now ready to [start searching](/reference/api/search/search-with-post)! diff --git a/learn/ai_powered_search/configure_rest_embedder.mdx b/learn/ai_powered_search/configure_rest_embedder.mdx index 4a00700f9c..8db9d9d29b 100644 --- a/learn/ai_powered_search/configure_rest_embedder.mdx +++ b/learn/ai_powered_search/configure_rest_embedder.mdx @@ -85,7 +85,7 @@ Most providers accept either a string or an array of strings. A single string wi } ``` -`{{text}}` indicates Meilisearch should replace the contents of a field with your document data, as indicated in the embedder's [`documentTemplate`](/reference/api/settings#documenttemplate). +`{{text}}` indicates Meilisearch should replace the contents of a field with your document data, as indicated in the embedder's [`documentTemplate`](/reference/api/settings/update-embedders). An array of strings allows Meilisearch to send up to 10 documents in one request, reducing the number of API calls to the provider: 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..cc12db088e 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#body-hybrid-one-of-1). diff --git a/learn/ai_powered_search/image_search_with_multimodal_embeddings.mdx b/learn/ai_powered_search/image_search_with_multimodal_embeddings.mdx index c6571e959e..ef9fcef270 100644 --- a/learn/ai_powered_search/image_search_with_multimodal_embeddings.mdx +++ b/learn/ai_powered_search/image_search_with_multimodal_embeddings.mdx @@ -8,8 +8,8 @@ This guide shows the main steps to search through a database of images using Mei ## Requirements - A database of images -- A Meilisearch project -- Access to a multimodal embedding provider (for example, [VoyageAI multimodal embeddings](https://docs.voyageai.com/reference/multimodal-embeddings-api)) +- A Meilisearch project +- Access to a multimodal embedding provider (for example, [VoyageAI multimodal embeddings](https://docs.voyageai.com/reference/multimodal-embeddings-api)) ## Enable multimodal embeddings @@ -185,11 +185,11 @@ curl \ }' ``` -Since the `source` of this embedder is `rest`, you must also specify a [`request` and a `response` fields](/reference/api/settings#body-21). These respectively instruct Meilisearch on how to structure the request sent to the embeddings provider, and where to find the embeddings in the provider's response. +Since the `source` of this embedder is `rest`, you must also specify a `request` and a `response` fields. These respectively instruct Meilisearch on how to structure the request sent to the embeddings provider, and where to find the embeddings in the provider's response. ## Add documents -Once your embedder is configured, you can [add documents to your index](/learn/getting_started/cloud_quick_start) with the [`/documents` endpoint](/reference/api/documents). +Once your embedder is configured, you can [add documents to your index](/learn/getting_started/cloud_quick_start) with the [`/documents` endpoint](/reference/api/documents/list-documents-with-get). During indexing, Meilisearch will automatically generate multimodal embeddings for each document using the configured `indexingFragments`. @@ -240,7 +240,7 @@ In most cases you will need a GUI interface that allows users to submit their im With multimodal embedders you can: -1. Configure Meilisearch to embed both images and queries -2. Add image documents — Meilisearch automatically generates embeddings -3. Accept text or image input from users +1. Configure Meilisearch to embed both images and queries +2. Add image documents — Meilisearch automatically generates embeddings +3. Accept text or image input from users 4. Run hybrid searches using a mix of textual and input from other types of media, or run pure semantic semantic searches using only non-textual input diff --git a/learn/ai_powered_search/image_search_with_user_provided_embeddings.mdx b/learn/ai_powered_search/image_search_with_user_provided_embeddings.mdx index 1b64c67ff3..c7f78de472 100644 --- a/learn/ai_powered_search/image_search_with_user_provided_embeddings.mdx +++ b/learn/ai_powered_search/image_search_with_user_provided_embeddings.mdx @@ -46,7 +46,7 @@ Replace `EMBEDDER_NAME` with the name you wish to give your embedder. Replace `M ## Add documents to Meilisearch -Next, use [the `/documents` endpoint](/reference/api/documents) to upload the vectorized images. +Next, use [the `/documents` endpoint](/reference/api/documents/add-or-replace-documents) to upload the vectorized images. In most cases, you should automate this step so Meilisearch is up to date with your primary database. diff --git a/learn/ai_powered_search/retrieve_related_search_results.mdx b/learn/ai_powered_search/retrieve_related_search_results.mdx index 8b3df04cef..265d673c56 100644 --- a/learn/ai_powered_search/retrieve_related_search_results.mdx +++ b/learn/ai_powered_search/retrieve_related_search_results.mdx @@ -5,7 +5,7 @@ description: This guide shows you how to use the similar documents endpoint to c # Retrieve related search results -This guide shows you how to use the [similar documents endpoint](/reference/api/similar) to create an AI-powered movie recommendation workflow. +This guide shows you how to use the [similar documents endpoint](/reference/api/similar-documents/get-similar-documents-with-post) to create an AI-powered movie recommendation workflow. First, you will create an embedder and add documents to your index. You will then perform a search, and use the top result's primary key to retrieve similar movies in your database. @@ -51,7 +51,7 @@ This request returns a list of movies. Pick the top result and take note of its ## Return similar documents -Pass "Batman"'s `id` to your index's [`/similar` route](/reference/api/similar), specifying `movies-text` as your embedder: +Pass "Batman"'s `id` to your index's [`/similar` route](/reference/api/similar-documents/get-similar-documents-with-post), specifying `movies-text` as your embedder: diff --git a/learn/ai_powered_search/search_with_user_provided_embeddings.mdx b/learn/ai_powered_search/search_with_user_provided_embeddings.mdx index 73d257d977..1dba009d30 100644 --- a/learn/ai_powered_search/search_with_user_provided_embeddings.mdx +++ b/learn/ai_powered_search/search_with_user_provided_embeddings.mdx @@ -34,7 +34,7 @@ Embedders with `source: userProvided` are incompatible with `documentTemplate` ## Add documents to Meilisearch -Next, use [the `/documents` endpoint](/reference/api/documents?utm_campaign=vector-search&utm_source=docs&utm_medium=vector-search-guide) to upload vectorized documents. Place vector data in your documents' `_vectors` field: +Next, use [the `/documents` endpoint](/reference/api/documents/list-documents-with-get?utm_campaign=vector-search&utm_source=docs&utm_medium=vector-search-guide) to upload vectorized documents. Place vector data in your documents' `_vectors` field: ```sh curl -X POST -H 'content-type: application/json' \ @@ -54,7 +54,7 @@ Once you have the query's vector, pass it to the `vector` search parameter to pe ```sh curl -X POST -H 'content-type: application/json' \ 'localhost:7700/indexes/products/search' \ - --data-binary '{ + --data-binary '{ "vector": [0, 1, 2], "hybrid": { "embedder": "image2text" @@ -64,7 +64,7 @@ curl -X POST -H 'content-type: application/json' \ `vector` must be an array of numbers indicating the search vector. You must generate these yourself when using vector search with user-provided embeddings. -`vector` can be used together with [other search parameters](/reference/api/search?utm_campaign=vector-search&utm_source=docs&utm_medium=vector-search-guide), including [`filter`](/reference/api/search#filter) and [`sort`](/reference/api/search#sort): +`vector` can be used together with [other search parameters](/reference/api/search/search-with-post?utm_campaign=vector-search&utm_source=docs&utm_medium=vector-search-guide), including [`filter`](/reference/api/search/search-with-post#body-filter) and [`sort`](/reference/api/search/search-with-post#body-sort): ```sh curl -X POST -H 'content-type: application/json' \ 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..6fb3a6cd58 100644 --- a/learn/async/asynchronous_operations.mdx +++ b/learn/async/asynchronous_operations.mdx @@ -34,7 +34,7 @@ When an API request triggers an asynchronous process, Meilisearch creates a task Tasks are objects containing information that allow you to track their progress and troubleshoot problems when things go wrong. -A [task object](/reference/api/tasks#task-object) includes data not present in the original request, such as when the request was enqueued, the type of request, and an error code when the task fails: +A [task object](/reference/api/async-task-management/get-task) includes data not present in the original request, such as when the request was enqueued, the type of request, and an error code when the task fails: ```json { @@ -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` @@ -83,7 +83,7 @@ Tasks always contain a field indicating the task's current `status`. This field - **`failed`**: a failure occurred when processing the task. No changes were made to the database - **`canceled`**: the task was canceled -`succeeded`, `failed`, and `canceled` tasks are finished tasks. Meilisearch keeps them in the task database but has finished processing these tasks. It is possible to [configure a webhook](/reference/api/webhooks) to notify external services when a task is finished. +`succeeded`, `failed`, and `canceled` tasks are finished tasks. Meilisearch keeps them in the task database but has finished processing these tasks. It is possible to [configure a webhook](/reference/api/webhooks/list-webhooks) to notify external services when a task is finished. `enqueued` and `processing` tasks are unfinished tasks. Meilisearch is either processing them or will do so in the future. @@ -93,11 +93,11 @@ Some task types are not associated with a particular index but apply to the enti Meilisearch considers the following task types as global: -- [`dumpCreation`](/reference/api/tasks#dumpcreation) -- [`taskCancelation`](/reference/api/tasks#taskcancelation) -- [`taskDeletion`](/reference/api/tasks#taskdeletion) -- [`indexSwap`](/reference/api/tasks#indexswap) -- [`snapshotCreation`](/reference/api/tasks#snapshotcreation) +- `dumpCreation` +- `taskCancelation` +- `taskDeletion` +- `indexSwap` +- `snapshotCreation` In a protected instance, your API key must have access to all indexes (`"indexes": [*]`) to view global tasks. @@ -108,7 +108,7 @@ In a protected instance, your API key must have access to all indexes (`"indexes After creating a task, Meilisearch places it in a queue. Enqueued tasks are processed one at a time, following the order in which they were requested. -When the task queue reaches its limit (about 10GiB), it will throw a `no_space_left_on_device` error. Users will need to delete tasks using the [delete tasks endpoint](/reference/api/tasks#delete-tasks) to continue write operations. +When the task queue reaches its limit (about 10GiB), it will throw a `no_space_left_on_device` error. Users will need to delete tasks using the [delete tasks endpoint](/reference/api/async-task-management/delete-tasks) to continue write operations. #### Task queue priority @@ -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 @@ -141,11 +141,11 @@ When you make a [request for an asynchronous operation](#which-operations-are-as ### Task batches -Meilisearch processes tasks in batches, grouping tasks for the best possible performance. In most cases, batching should be transparent and have no impact on the overall task workflow. Use [the `/batches` route](/reference/api/batches) to obtain more information on batches and how they are processing your tasks. +Meilisearch processes tasks in batches, grouping tasks for the best possible performance. In most cases, batching should be transparent and have no impact on the overall task workflow. Use [the `/batches` route](/reference/api/async-task-management/list-batches) to obtain more information on batches and how they are processing your tasks. ### Canceling tasks -You can cancel a task while it is `enqueued` or `processing` by using [the cancel tasks endpoint](/reference/api/tasks#cancel-tasks). Doing so changes a task's `status` to `canceled`. +You can cancel a task while it is `enqueued` or `processing` by using [the cancel tasks endpoint](/reference/api/async-task-management/cancel-tasks). Doing so changes a task's `status` to `canceled`. Tasks are not canceled when you terminate a Meilisearch instance. Meilisearch discards all progress made on `processing` tasks and resets them to `enqueued`. Task handling proceeds as normal once the instance is relaunched. @@ -153,15 +153,15 @@ 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. #### Examples -Suppose you add a new document to your instance using the [add documents endpoint](/reference/api/documents#add-or-replace-documents) and receive a `taskUid` in response. +Suppose you add a new document to your instance using the [add documents endpoint](/reference/api/documents/add-or-replace-documents) and receive a `taskUid` in response. -When you query the [get task endpoint](/reference/api/tasks#get-one-task) using this value, you see that it has been `enqueued`: +When you query the [get task endpoint](/reference/api/async-task-management/get-task) using this value, you see that it has been `enqueued`: ```json { @@ -229,6 +229,6 @@ Had the task failed, the response would have included a detailed `error` object: } ``` -If the task had been [canceled](/reference/api/tasks#cancel-tasks) while it was `enqueued` or `processing`, it would have the `canceled` status and a non-`null` value for the `canceledBy` field. +If the task had been [canceled](/reference/api/async-task-management/cancel-tasks) while it was `enqueued` or `processing`, it would have the `canceled` status and a non-`null` value for the `canceledBy` field. -After a task has been [deleted](/reference/api/tasks#delete-tasks), trying to access it returns a [`task_not_found`](/reference/errors/error_codes#task_not_found) error. +After a task has been [deleted](/reference/api/async-task-management/delete-tasks), trying to access it returns a [`task_not_found`](/reference/errors/error_codes#task_not_found) error. diff --git a/learn/async/filtering_tasks.mdx b/learn/async/filtering_tasks.mdx index c62af96f5f..cc7a227fe9 100644 --- a/learn/async/filtering_tasks.mdx +++ b/learn/async/filtering_tasks.mdx @@ -8,12 +8,12 @@ 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. -Filtering batches with [the `/batches` route](/reference/api/batches) follows the same rules as filtering tasks. Keep in mind that many `/batches` parameters such as `uids` target the tasks included in batches, instead of the batches themselves. +Filtering batches with [the `/batches` route](/reference/api/async-task-management/list-batches) follows the same rules as filtering tasks. Keep in mind that many `/batches` parameters such as `uids` target the tasks included in batches, instead of the batches themselves. ## Requirements @@ -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..22627017e0 100644 --- a/learn/async/paginating_tasks.mdx +++ b/learn/async/paginating_tasks.mdx @@ -7,10 +7,10 @@ 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. +Paginating batches with [the `/batches` route](/reference/api/async-task-management/list-batches) follows the same rules as paginating tasks. ## Configuring the number of returned tasks @@ -33,7 +33,7 @@ Meilisearch will return a batch of tasks. Each batch of returned tasks is often } ``` -It is possible none of the returned tasks are the ones you are looking for. In that case, you will need to use the [get all tasks request response](/reference/api/tasks#response) to navigate the results. +It is possible none of the returned tasks are the ones you are looking for. In that case, you will need to use the [get all tasks request response](/reference/api/async-task-management/list-tasks) to navigate the results. ## Navigating the task list with `from` and `next` diff --git a/learn/async/working_with_tasks.mdx b/learn/async/working_with_tasks.mdx index db64bce29f..0f145d0d86 100644 --- a/learn/async/working_with_tasks.mdx +++ b/learn/async/working_with_tasks.mdx @@ -86,7 +86,7 @@ This will return the full task object: } ``` -If the task is still `enqueued` or `processing`, wait a few moments and query the database once again. You may also [set up a webhook listener](/reference/api/webhooks). +If the task is still `enqueued` or `processing`, wait a few moments and query the database once again. You may also [set up a webhook listener](/reference/api/webhooks/list-webhooks). When `status` changes to `succeeded`, Meilisearch has finished processing your request. @@ -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 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/chat/conversational_search.mdx b/learn/chat/conversational_search.mdx index 2b32a74989..7c6999a266 100644 --- a/learn/chat/conversational_search.mdx +++ b/learn/chat/conversational_search.mdx @@ -41,7 +41,7 @@ Conversational search is still in early development. Conversational agents may o ### Retrieval Augmented Generation (RAG) -In the majority of cases, you should use the [`/chats` route](/reference/api/chats) to build a Retrieval Augmented Generation (RAG) pipeline. RAGs excel when working with unstructured data and emphasise high-quality responses. +In the majority of cases, you should use the [`/chats` route](/reference/api/chats/update-chat) to build a Retrieval Augmented Generation (RAG) pipeline. RAGs excel when working with unstructured data and emphasise high-quality responses. Meilisearch's chat completions API consolidates RAG creation into a single process: diff --git a/learn/chat/getting_started_with_chat.mdx b/learn/chat/getting_started_with_chat.mdx index 7cc7f5d057..ee180d9edf 100644 --- a/learn/chat/getting_started_with_chat.mdx +++ b/learn/chat/getting_started_with_chat.mdx @@ -162,7 +162,7 @@ Which fields are mandatory will depend on your chosen provider `source`. In most `baseUrl` indicates the URL Meilisearch queries when users submit questions to your chat interface. This is only mandatory for Azure OpenAI and vLLM sources. -`prompts.system` gives the conversational search bot the baseline context of your users and their questions. [The `prompts` object accepts a few other fields](/reference/api/chats#prompts) that provide more information to improve how the agent uses the information it finds via Meilisearch. In real-life scenarios filling these fields would improve the quality of conversational search results. +`prompts.system` gives the conversational search bot the baseline context of your users and their questions. [The `prompts` object accepts a few other fields](/reference/api/chats/update-chat) that provide more information to improve how the agent uses the information it finds via Meilisearch. In real-life scenarios filling these fields would improve the quality of conversational search results. ## Send your first chat completions request 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..05f4577b60 100644 --- a/learn/data_backup/dumps.mdx +++ b/learn/data_backup/dumps.mdx @@ -25,11 +25,11 @@ If you need to create a dump for reasons other than upgrading, contact the suppo ### Creating a dump in a self-hosted instance -To create a dump, use the [create a dump endpoint](/reference/api/dump#create-a-dump): +To create a dump, use the [create a dump endpoint](/reference/api/backups/create-dump): -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/data_backup/snapshots.mdx b/learn/data_backup/snapshots.mdx index 563027d561..b7264370f6 100644 --- a/learn/data_backup/snapshots.mdx +++ b/learn/data_backup/snapshots.mdx @@ -35,7 +35,7 @@ meilisearch --schedule-snapshot=3600 This instructs Meilisearch to create a new snapshot once every hour. -If you need to generate a single snapshot without relaunching your instance, use [the `/snapshots` route](/reference/api/snapshots). +If you need to generate a single snapshot without relaunching your instance, use [the `/snapshots` route](/reference/api/backups/create-snapshot). ## Starting from a snapshot diff --git a/learn/engine/datatypes.mdx b/learn/engine/datatypes.mdx index efc35b074f..1d24fd52d1 100644 --- a/learn/engine/datatypes.mdx +++ b/learn/engine/datatypes.mdx @@ -37,7 +37,7 @@ For more separators, including those used in other writing systems like Cyrillic For the tokenization process, dictionaries are lists of groups of characters which should be considered as single term. Dictionaries are particularly useful when identifying words in languages like Japanese, where words are not always marked by separator tokens. -Meilisearch comes with a number of general-use dictionaries for its officially supported languages. When working with documents containing many domain-specific terms, such as a legal documents or academic papers, providing a [custom dictionary](/reference/api/settings#dictionary) may improve search result relevancy. +Meilisearch comes with a number of general-use dictionaries for its officially supported languages. When working with documents containing many domain-specific terms, such as a legal documents or academic papers, providing a [custom dictionary](/reference/api/settings/get-dictionary) may improve search result relevancy. ### Distance diff --git a/learn/filtering_and_sorting/filter_search_results.mdx b/learn/filtering_and_sorting/filter_search_results.mdx index 6587f68f92..4c9e4d1fc0 100644 --- a/learn/filtering_and_sorting/filter_search_results.mdx +++ b/learn/filtering_and_sorting/filter_search_results.mdx @@ -49,7 +49,7 @@ By default, `filterableAttributes` is empty. Filters do not work without first e ## Use `filter` when searching -After updating the [`filterableAttributes` index setting](/reference/api/settings#filterable-attributes), you can use `filter` to fine-tune your search results. +After updating the [`filterableAttributes` index setting](/reference/api/settings/get-filterableattributes), you can use `filter` to fine-tune your search results. `filter` is a search parameter you may use at search time. `filter` accepts [filter expressions](/learn/filtering_and_sorting/filter_expression_reference) built using any attributes present in the `filterableAttributes` list. diff --git a/learn/filtering_and_sorting/geosearch.mdx b/learn/filtering_and_sorting/geosearch.mdx index b77bd9600c..95d001095c 100644 --- a/learn/filtering_and_sorting/geosearch.mdx +++ b/learn/filtering_and_sorting/geosearch.mdx @@ -171,7 +171,7 @@ Meilisearch will rebuild your index whenever you update `filterableAttributes`. ### Usage -Use the [`filter` search parameter](/reference/api/search#filter) along with `_geoRadius` and `_geoBoundingBox`. These are special filter rules that ensure Meilisearch only returns results located within a specific geographic area. If you are using GeoJSON for your documents, you may also filter results with `_geoPolygon`. +Use the [`filter` search parameter](/reference/api/search/search-with-post#body-filter) along with `_geoRadius` and `_geoBoundingBox`. These are special filter rules that ensure Meilisearch only returns results located within a specific geographic area. If you are using GeoJSON for your documents, you may also filter results with `_geoPolygon`. ### `_geoRadius` diff --git a/learn/filtering_and_sorting/search_with_facet_filters.mdx b/learn/filtering_and_sorting/search_with_facet_filters.mdx index 01de8a5741..ee0197be14 100644 --- a/learn/filtering_and_sorting/search_with_facet_filters.mdx +++ b/learn/filtering_and_sorting/search_with_facet_filters.mdx @@ -84,7 +84,7 @@ The response returns all books matching the query. It also returns two fields yo ### Sorting facet values -By default, all facet values are sorted in ascending alphanumeric order. You can change this using the `sortFacetValuesBy` property of the [`faceting` index settings](/reference/api/settings#faceting): +By default, all facet values are sorted in ascending alphanumeric order. You can change this using the `sortFacetValuesBy` property of the [`faceting` index settings](/reference/api/settings/get-faceting): @@ -119,7 +119,7 @@ Repeating the previous query using the new settings will result in a different o ## Searching facet values -You can also search for facet values with the [facet search endpoint](/reference/api/facet_search): +You can also search for facet values with the [facet search endpoint](/reference/api/facet-search/search-in-facets): @@ -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/filtering_and_sorting/sort_search_results.mdx b/learn/filtering_and_sorting/sort_search_results.mdx index c6cfaa08e0..4cf4d07d63 100644 --- a/learn/filtering_and_sorting/sort_search_results.mdx +++ b/learn/filtering_and_sorting/sort_search_results.mdx @@ -16,7 +16,7 @@ By default, Meilisearch focuses on ordering results according to their relevancy This can be useful in many situations, such as when a user wants to see the cheapest products available in a webshop. -Sorting at search time can be particularly effective when combined with [placeholder searches](/reference/api/search#placeholder-search). +Sorting at search time can be particularly effective when combined with placeholder searches (`"q": null`). ## Configure Meilisearch for sorting at search time @@ -37,7 +37,7 @@ Uppercase letters are sorted as if they were lowercase. They will still appear u Meilisearch allows you to sort results based on document fields. Only fields containing numbers, strings, arrays of numeric values, and arrays of string values can be used for sorting. -After you have decided which fields you will allow your users to sort on, you must add their attributes to the [`sortableAttributes` index setting](/reference/api/settings#sortable-attributes). +After you have decided which fields you will allow your users to sort on, you must add their attributes to the [`sortableAttributes` index setting](/reference/api/settings/get-sortableattributes). If a field has values of different types across documents, Meilisearch will give precedence to numbers over strings. This means documents with numeric field values will be ranked higher than those with string values. @@ -106,7 +106,7 @@ If your users care more about finding cheaper books than they care about finding ## Sort results at search time -After configuring `sortableAttributes`, you can use the [`sort` search parameter](/reference/api/search#sort) to control the sorting order of your search results. +After configuring `sortableAttributes`, you can use the [`sort` search parameter](/reference/api/search/search-with-post#body-sort) to control the sorting order of your search results. `sort` expects a list of attributes that have been added to the `sortableAttributes` list. diff --git a/learn/filtering_and_sorting/working_with_dates.mdx b/learn/filtering_and_sorting/working_with_dates.mdx index a2a62b0d34..206bf22cc3 100644 --- a/learn/filtering_and_sorting/working_with_dates.mdx +++ b/learn/filtering_and_sorting/working_with_dates.mdx @@ -41,13 +41,13 @@ As an example, consider a database of video games. In this dataset, the release ] ``` -Once all documents in your dataset have a date field, [index your data](/reference/api/documents#add-or-replace-documents) as usual. The example below adds a videogame dataset to a `games` index: +Once all documents in your dataset have a date field, [index your data](/reference/api/documents/add-or-replace-documents) as usual. The example below adds a videogame dataset to a `games` index: ## Filtering by date -To filter search results based on their timestamp, add your document's timestamp field to the list of [`filterableAttributes`](/reference/api/settings#update-filterable-attributes): +To filter search results based on their timestamp, add your document's timestamp field to the list of [`filterableAttributes`](/reference/api/settings/update-filterableattributes): @@ -57,7 +57,7 @@ Once you have configured `filterableAttributes`, you can filter search results b ## Sorting by date -To sort search results chronologically, add your document's timestamp field to the list of [`sortableAttributes`](/reference/api/settings#update-sortable-attributes): +To sort search results chronologically, add your document's timestamp field to the list of [`sortableAttributes`](/reference/api/settings/update-sortableattributes): diff --git a/learn/getting_started/documents.mdx b/learn/getting_started/documents.mdx index 437d5acfd0..1e7a8a3167 100644 --- a/learn/getting_started/documents.mdx +++ b/learn/getting_started/documents.mdx @@ -7,7 +7,7 @@ sidebarDepth: 3 A document is an object composed of one or more fields. Each field consists of an **attribute** and its associated **value**. Documents function as containers for organizing data and are the basic building blocks of a Meilisearch database. To search for a document, you must first add it to an [index](/learn/getting_started/indexes). -Nothing will be shared between two indexes if they contain the exact same document. Instead, both documents will be treated as different documents. Depending on the [index's settings](/reference/api/settings), the documents might have different sizes. +Nothing will be shared between two indexes if they contain the exact same document. Instead, both documents will be treated as different documents. Depending on the [index's settings](/reference/api/settings/list-all-settings), the documents might have different sizes. ## Structure @@ -47,7 +47,7 @@ Reserved attributes are always prefixed with an underscore (`_`). By default, all fields in a document are both displayed and searchable. Displayed fields are contained in each matching document, while searchable fields are searched for matching query words. -You can modify this behavior using the [update settings endpoint](/reference/api/settings#update-settings), or the respective update endpoints for [displayed attributes](/reference/api/settings#update-displayed-attributes), and [searchable attributes](/reference/api/settings#update-searchable-attributes) so that a field is: +You can modify this behavior using the [update settings endpoint](/reference/api/settings/update-all-settings), or the respective update endpoints for [displayed attributes](/reference/api/settings/update-displayedattributes), and [searchable attributes](/reference/api/settings/update-searchableattributes) so that a field is: - Searchable but not displayed - Displayed but not searchable @@ -69,7 +69,7 @@ By default, Meilisearch limits the size of all payloads—and therefore document Meilisearch uses a lot of RAM when indexing documents. Be aware of your [RAM availability](/learn/resources/faq#what-are-the-recommended-requirements-for-hosting-a-meilisearch-instance) as you increase your batch size as this could cause Meilisearch to crash. -When using the [add new documents endpoint](/reference/api/documents#add-or-update-documents), ensure: +When using the [add new documents endpoint](/reference/api/documents/add-or-update-documents), ensure: - The payload format is correct. There are no extraneous commas, mismatched brackets, missing quotes, etc. - All documents are sent in an array, even if there is only one document @@ -127,7 +127,7 @@ The above JSON document would look like this in NDJSON: CSV files express data as a sequence of values separated by a delimiter character. Meilisearch accepts `string`, `boolean`, and `number` data types for CSV documents. If you don't specify the data type for an attribute, it will default to `string`. Empty fields such as `,,` and `, ,` will be considered `null`. -By default, Meilisearch uses a single comma (`,`) as the delimiter. Use the `csvDelimiter` query parameter with the [add or update documents](/reference/api/documents#add-or-update-documents) or [add or replace documents](/reference/api/documents#add-or-replace-documents) endpoints to set a different character. Any [rules that apply to formatting CSV](https://datatracker.ietf.org/doc/html/rfc4180) also apply to Meilisearch documents. +By default, Meilisearch uses a single comma (`,`) as the delimiter. Use the `csvDelimiter` query parameter with the [add or update documents](/reference/api/documents/add-or-update-documents) or [add or replace documents](/reference/api/documents/add-or-replace-documents) endpoints to set a different character. Any [rules that apply to formatting CSV](https://datatracker.ietf.org/doc/html/rfc4180) also apply to Meilisearch documents. Meilisearch will only accept CSV documents when it receives the `text/csv` content-type header. diff --git a/learn/getting_started/indexes.mdx b/learn/getting_started/indexes.mdx index a949ff08dd..5c7801e7da 100644 --- a/learn/getting_started/indexes.mdx +++ b/learn/getting_started/indexes.mdx @@ -29,7 +29,7 @@ If you try to add documents or settings to an index that does not already exist, ### Explicit index creation -You can explicitly create an index using the [create index endpoint](/reference/api/indexes#create-an-index). Once created, you can add documents using the [add documents endpoint](/reference/api/documents#add-or-update-documents). +You can explicitly create an index using the [create index endpoint](/reference/api/indexes/create-index). Once created, you can add documents using the [add documents endpoint](/reference/api/documents/add-or-update-documents). While implicit index creation is more convenient, requiring only a single API request, **explicit index creation is considered safer for production**. This is because implicit index creation bundles multiple actions into a single task. If one action completes successfully while the other fails, the problem can be difficult to diagnose. @@ -45,7 +45,7 @@ The `uid` is the **unique identifier** of an index. It is set when creating the } ``` -You can change an index's `uid` using the [`/indexes` API route](/reference/api/indexes#update-an-index). +You can change an index's `uid` using the [`/indexes` API route](/reference/api/indexes/update-index). ## Primary key @@ -61,13 +61,13 @@ You can set the primary key for an index or let it be inferred by Meilisearch. R Index settings can be thought of as a JSON object containing many different options for customizing search behavior. -To change index settings, use the [update settings endpoint](/reference/api/settings#update-settings) or any of the child routes. +To change index settings, use the [update settings endpoint](/reference/api/settings/update-all-settings) or any of the child routes. ### Displayed and searchable attributes By default, every document field is searchable and displayed in response to search queries. However, you can choose to set some fields as non-searchable, non-displayed, or both. -You can update these field attributes using the [update settings endpoint](/reference/api/settings#update-settings), or the respective endpoints for [displayed attributes](/reference/api/settings#update-displayed-attributes) and [searchable attributes](/reference/api/settings#update-searchable-attributes). +You can update these field attributes using the [update settings endpoint](/reference/api/settings/update-all-settings), or the respective endpoints for [displayed attributes](/reference/api/settings/update-displayedattributes) and [searchable attributes](/reference/api/settings/update-searchableattributes). [Learn more about displayed and searchable attributes.](/learn/relevancy/displayed_searchable_attributes) @@ -75,15 +75,15 @@ You can update these field attributes using the [update settings endpoint](/refe If your dataset contains multiple similar documents, you may want to return only one on search. Suppose you have numerous black jackets in different sizes in your `costumes` index. Setting `costume_name` as the distinct attribute will mean Meilisearch will not return more than one black jacket with the same `costume_name`. -Designate the distinct attribute using the [update settings endpoint](/reference/api/settings#update-settings) or the [update distinct attribute endpoint](/reference/api/settings#update-distinct-attribute). **You can only set one field as the distinct attribute per index.** +Designate the distinct attribute using the [update settings endpoint](/reference/api/settings/update-all-settings) or the [update distinct attribute endpoint](/reference/api/settings/update-distinctattribute). **You can only set one field as the distinct attribute per index.** [Learn more about distinct attributes.](/learn/relevancy/distinct_attribute) ### Faceting -Facets are a specific use-case of filters in Meilisearch: whether something is a facet or filter depends on your UI and UX design. Like filters, you need to add your facets to [`filterableAttributes`](/reference/api/settings#update-filterable-attributes), then make a search query using the [`filter` search parameter](/reference/api/search#filter). +Facets are a specific use-case of filters in Meilisearch: whether something is a facet or filter depends on your UI and UX design. Like filters, you need to add your facets to [`filterableAttributes`](/reference/api/settings/update-filterableattributes), then make a search query using the [`filter` search parameter](/reference/api/search/search-with-post#body-filter). -By default, Meilisearch returns `100` facet values for each faceted field. You can change this using the [update settings endpoint](/reference/api/settings#update-settings) or the [update faceting settings endpoint](/reference/api/settings#update-faceting-settings). +By default, Meilisearch returns `100` facet values for each faceted field. You can change this using the [update settings endpoint](/reference/api/settings/update-all-settings) or the [update faceting settings endpoint](/reference/api/settings/update-facetsearch). [Learn more about faceting.](/learn/filtering_and_sorting/search_with_facet_filters) @@ -91,13 +91,13 @@ By default, Meilisearch returns `100` facet values for each faceted field. You c Filtering allows you to refine your search based on different categories. For example, you could search for all movies of a certain `genre`: `Science Fiction`, with a `rating` above `8`. -Before filtering on any document attribute, you must add it to `filterableAttributes` using the [update settings endpoint](/reference/api/settings#update-settings) or the [update filterable attributes endpoint](/reference/api/settings#update-filterable-attributes). Then, make a search query using the [`filter` search parameter](/reference/api/search#filter). +Before filtering on any document attribute, you must add it to `filterableAttributes` using the [update settings endpoint](/reference/api/settings/update-all-settings) or the [update filterable attributes endpoint](/reference/api/settings/update-filterableattributes). Then, make a search query using the [`filter` search parameter](/reference/api/search/search-with-post#body-filter). [Learn more about filtering.](/learn/filtering_and_sorting/filter_search_results) ### Pagination -To protect your database from malicious scraping, Meilisearch only returns up to `1000` results for a search query. You can change this limit using the [update settings endpoint](/reference/api/settings#update-settings) or the [update pagination settings endpoint](/reference/api/settings#update-pagination-settings). +To protect your database from malicious scraping, Meilisearch only returns up to `1000` results for a search query. You can change this limit using the [update settings endpoint](/reference/api/settings/update-all-settings) or the [update pagination settings endpoint](/reference/api/settings/update-pagination). [Learn more about pagination.](/guides/front_end/pagination) @@ -105,7 +105,7 @@ To protect your database from malicious scraping, Meilisearch only returns up to Meilisearch uses ranking rules to sort matching documents so that the most relevant documents appear at the top. All indexes are created with the same built-in ranking rules executed in default order. The order of these rules matters: the first rule has the most impact, and the last rule has the least. -You can alter this order or define custom ranking rules to return certain results first. This can be done using the [update settings endpoint](/reference/api/settings#update-settings) or the [update ranking rules endpoint](/reference/api/settings#update-ranking-rules). +You can alter this order or define custom ranking rules to return certain results first. This can be done using the [update settings endpoint](/reference/api/settings/update-all-settings) or the [update ranking rules endpoint](/reference/api/settings/update-rankingrules). [Learn more about ranking rules.](/learn/relevancy/relevancy) @@ -113,23 +113,23 @@ You can alter this order or define custom ranking rules to return certain result By default, Meilisearch orders results according to their relevancy. You can alter this sorting behavior to show certain results first. -Add the attributes you'd like to sort by to `sortableAttributes` using the [update settings endpoint](/reference/api/settings#update-settings) or the [update sortable attributes endpoint](/reference/api/settings#update-sortable-attributes). You can then use the [`sort` search parameter](/reference/api/search#sort) to sort your results in ascending or descending order. +Add the attributes you'd like to sort by to `sortableAttributes` using the [update settings endpoint](/reference/api/settings/update-all-settings) or the [update sortable attributes endpoint](/reference/api/settings/update-sortableattributes). You can then use the [`sort` search parameter](/reference/api/search/search-with-post#body-sort) to sort your results in ascending or descending order. [Learn more about sorting.](/learn/filtering_and_sorting/sort_search_results) ### Stop words -Your dataset may contain words you want to ignore during search because, for example, they don't add semantic value or occur too frequently (for instance, `the` or `of` in English). You can add these words to the [stop words list](/reference/api/settings#stop-words) and Meilisearch will ignore them during search. +Your dataset may contain words you want to ignore during search because, for example, they don't add semantic value or occur too frequently (for instance, `the` or `of` in English). You can add these words to the [stop words list](/reference/api/settings/get-stopwords) and Meilisearch will ignore them during search. -Change your index's stop words list using the [update settings endpoint](/reference/api/settings#update-settings) or the [update stop words endpoint](/reference/api/settings#update-stop-words). In addition to improving relevancy, designating common words as stop words greatly improves performance. +Change your index's stop words list using the [update settings endpoint](/reference/api/settings/update-all-settings) or the [update stop words endpoint](/reference/api/settings/update-stopwords). In addition to improving relevancy, designating common words as stop words greatly improves performance. -[Learn more about stop words.](/reference/api/settings#stop-words) +[Learn more about stop words.](/reference/api/settings/get-stopwords) ### Synonyms Your dataset may contain words with similar meanings. For these, you can define a list of synonyms: words that will be treated as the same or similar for search purposes. Words set as synonyms won't always return the same results due to factors like typos and splitting the query. -Since synonyms are defined for a given index, they won't apply to any other index on the same Meilisearch instance. You can create your list of synonyms using the [update settings endpoint](/reference/api/settings#update-settings) or the [update synonyms endpoint](/reference/api/settings#update-synonyms). +Since synonyms are defined for a given index, they won't apply to any other index on the same Meilisearch instance. You can create your list of synonyms using the [update settings endpoint](/reference/api/settings/update-all-settings) or the [update synonyms endpoint](/reference/api/settings/update-synonyms). [Learn more about synonyms.](/learn/relevancy/synonyms) @@ -142,7 +142,7 @@ Typo tolerance is a built-in feature that helps you find relevant results even w - Disable typos on specific words - Disable typos on specific document attributes -You can update the typo tolerance settings using the [update settings endpoint](/reference/api/settings#update-settings) or the [update typo tolerance endpoint](/reference/api/settings#update-typo-tolerance-settings). +You can update the typo tolerance settings using the [update settings endpoint](/reference/api/settings/update-all-settings) or the [update typo tolerance endpoint](/reference/api/settings/update-typotolerance). [Learn more about typo tolerance.](/learn/relevancy/typo_tolerance_settings) @@ -158,4 +158,4 @@ Once swapped, your users will still be making search requests to the `movies` in Swapping indexes is an atomic transaction: **either all indexes are successfully swapped, or none are**. -For more information, see the [swap indexes endpoint](/reference/api/indexes#swap-indexes). +For more information, see the [swap indexes endpoint](/reference/api/indexes/swap-indexes). diff --git a/learn/getting_started/primary_key.mdx b/learn/getting_started/primary_key.mdx index 5afa0bac7b..4ac9ffabdf 100644 --- a/learn/getting_started/primary_key.mdx +++ b/learn/getting_started/primary_key.mdx @@ -130,7 +130,7 @@ The code below adds a document to the `books` index and sets `reference_number` ### Changing your primary key with the update index endpoint -The primary key cannot be changed while documents are present in the index. To change the primary key of an index that already contains documents, you must therefore [delete all documents](/reference/api/documents#delete-all-documents) from that index, [change the primary key](/reference/api/indexes#update-an-index), then [add them](/reference/api/documents#add-or-replace-documents) again. +The primary key cannot be changed while documents are present in the index. To change the primary key of an index that already contains documents, you must therefore [delete all documents](/reference/api/documents/delete-all-documents) from that index, [change the primary key](/reference/api/indexes/update-index), then [add them](/reference/api/documents/add-or-replace-documents) again. The code below updates the primary key to `title`: diff --git a/learn/getting_started/what_is_meilisearch.mdx b/learn/getting_started/what_is_meilisearch.mdx index 5f1f7c0733..1831e45b74 100644 --- a/learn/getting_started/what_is_meilisearch.mdx +++ b/learn/getting_started/what_is_meilisearch.mdx @@ -26,14 +26,14 @@ _Meilisearch helps you find where to watch a movie at [where2watch.meilisearch.c - **Highly customizable search and indexing**: Customize search behavior to better meet your needs - [Custom ranking](/learn/relevancy/relevancy): Customize the relevancy of the search engine and the ranking of the search results - [Filtering](/learn/filtering_and_sorting/filter_search_results) and [faceted search](/learn/filtering_and_sorting/search_with_facet_filters): Enhance user search experience with custom filters and build a faceted search interface in a few lines of code -- [Highlighting](/reference/api/search#highlight-tags): Highlighted search results in documents -- [Stop words](/reference/api/settings#stop-words): Ignore common non-relevant words like `of` or `the` -- [Synonyms](/reference/api/settings#synonyms): Configure synonyms to include more relevant content in your search results +- [Highlighting](/reference/api/search/search-with-post#body-highlight-pre-tag): Highlighted search results in documents +- [Stop words](/reference/api/settings/get-stopwords): Ignore common non-relevant words like `of` or `the` +- [Synonyms](/reference/api/settings/get-synonyms): Configure synonyms to include more relevant content in your search results - **RESTful API**: Integrate Meilisearch in your technical stack with our plugins and SDKs - [Search preview](/learn/getting_started/search_preview): Allows you to test your search settings without implementing a front-end - [API key management](/learn/security/basic_security): Protect your instance with API keys. Set expiration dates and control access to indexes and endpoints so that your data is always safe - [Multitenancy and tenant tokens](/learn/security/multitenancy_tenant_tokens): Manage complex multi-user applications. Tenant tokens help you decide which documents each one of your users can search -- [Multi-search](/reference/api/multi_search): Perform multiple search queries on multiple indexes with a single HTTP request +- [Multi-search](/reference/api/search/perform-a-multi-search): Perform multiple search queries on multiple indexes with a single HTTP request - [Geosearch](/learn/filtering_and_sorting/geosearch): Filter and sort results based on their geographic location - [Index swapping](/learn/getting_started/indexes#swapping-indexes): Deploy major database updates with zero search downtime @@ -41,7 +41,7 @@ _Meilisearch helps you find where to watch a movie at [where2watch.meilisearch.c Our goal is to provide a simple and intuitive experience for both developers and end-users. Ease of use was the primary focus of Meilisearch from its first release, and it continues to drive its development today. -Meilisearch's ease-of-use goes hand-in-hand with ultra relevant search results. Meilisearch **sorts results according to a set of [ranking rules](/learn/relevancy/ranking_rules)**. Our default ranking rules work for most use cases as we developed them by working directly with our users. You can also **configure the [search parameters](/reference/api/search)** to refine your search even further. +Meilisearch's ease-of-use goes hand-in-hand with ultra relevant search results. Meilisearch **sorts results according to a set of [ranking rules](/learn/relevancy/ranking_rules)**. Our default ranking rules work for most use cases as we developed them by working directly with our users. You can also **configure the [search parameters](/reference/api/search/search-with-post)** to refine your search even further. Meilisearch should **not be your main data store**. It is a search engine, not a database. Meilisearch should contain only the data you want your users to search through. If you must add data that is irrelevant to search, be sure to [make those fields non-searchable](/learn/relevancy/displayed_searchable_attributes#searchable-fields) to improve relevancy and response time. diff --git a/learn/indexing/indexing_best_practices.mdx b/learn/indexing/indexing_best_practices.mdx index ed4ba353e6..a9561be3a7 100644 --- a/learn/indexing/indexing_best_practices.mdx +++ b/learn/indexing/indexing_best_practices.mdx @@ -18,11 +18,11 @@ Some document fields are necessary for [filtering](/learn/filtering_and_sorting/ ## Configure your index before adding documents -When creating a new index, first [configure its settings](/reference/api/settings) and only then add your documents. Whenever you update settings such as [ranking rules](/learn/relevancy/relevancy), Meilisearch will trigger a reindexing of all your documents. This can be a time-consuming process, especially if you have a large dataset. For this reason, it is better to define ranking rules and other settings before indexing your data. +When creating a new index, first [configure its settings](/reference/api/settings/list-all-settings) and only then add your documents. Whenever you update settings such as [ranking rules](/learn/relevancy/relevancy), Meilisearch will trigger a reindexing of all your documents. This can be a time-consuming process, especially if you have a large dataset. For this reason, it is better to define ranking rules and other settings before indexing your data. ## 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/get-searchableattributes), [filterable](/reference/api/settings/get-filterableattributes), [sortable](/reference/api/settings/get-sortableattributes), or [displayed](/reference/api/settings/get-displayedattributes) 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). ## Prefer bigger HTTP payloads @@ -68,7 +68,7 @@ Due to how Meilisearch works, it is best to avoid HDDs (Hard Disk Drives) as the ## Enable binary quantization when using AI-powered search -If you are experiencing performance issues when indexing documents for AI-powered search, consider enabling [binary quantization](/reference/api/settings#binaryquantized) for your embedders. Binary quantization compresses vectors by representing each dimension with 1-bit values. This reduces the relevancy of semantic search results, but greatly improves performance. +If you are experiencing performance issues when indexing documents for AI-powered search, consider enabling [binary quantization](/reference/api/settings/update-embedders) for your embedders. Binary quantization compresses vectors by representing each dimension with 1-bit values. This reduces the relevancy of semantic search results, but greatly improves performance. Binary quantization works best with large datasets containing more than 1M documents and using models with more than 1400 dimensions. diff --git a/learn/indexing/multilingual-datasets.mdx b/learn/indexing/multilingual-datasets.mdx index c9c99ead95..4c4708489c 100644 --- a/learn/indexing/multilingual-datasets.mdx +++ b/learn/indexing/multilingual-datasets.mdx @@ -15,7 +15,7 @@ If you have a multilingual dataset, the best practice is to create one index per - Provides natural sharding of your data by language, making it easier to maintain and scale. -- Lets you apply language-specific settings, such as [stop words](/reference/api/settings#stop-words), and [separators](/reference/api/settings#separator-tokens). +- Lets you apply language-specific settings, such as [stop words](/reference/api/settings/get-stopwords), and [separators](/reference/api/settings/get-separatortokens). - Simplifies the handling of complex languages like Chinese or Japanese, which require specialized tokenizers. @@ -23,9 +23,9 @@ If you have a multilingual dataset, the best practice is to create one index per If you want to allow users to search in more than one language at once, you can: -- Run a [multi-search](/reference/api/multi_search), querying several indexes in parallel. +- Run a [multi-search](/reference/api/search/perform-a-multi-search), querying several indexes in parallel. -- Use [federated search](/reference/api/multi_search#federated-multi-search-requests), aggregating results from multiple language indexes into a single response. +- Use [federated search](/reference/api/search/perform-a-multi-search), aggregating results from multiple language indexes into a single response. ### Create a single index for multiple languages @@ -49,7 +49,7 @@ In some cases, you may prefer to keep multiple languages in a **single index**. - Use language-specific field names with a prefix or suffix (e.g., title_fr, title_en, or fr_title). -- Declare these fields as [localized attributes](/reference/api/settings#localized-attributes) so Meilisearch can apply the correct tokenizer to each one. +- Declare these fields as [localized attributes](/reference/api/settings/get-localized-attributes) so Meilisearch can apply the correct tokenizer to each one. - This allows you to filter and search by language, even when multiple languages are stored in the same index. @@ -83,7 +83,7 @@ To keep queries and documents consistent, Meilisearch provides configuration opt #### Declaring locales for documents -The [`localizedAttributes` setting](/reference/api/settings#localized-attributes) allows you to explicitly define which languages are present in your dataset, and in which fields. +The [`localizedAttributes` setting](/reference/api/settings/get-localized-attributes) allows you to explicitly define which languages are present in your dataset, and in which fields. For example, if your dataset contains multilingual titles, you can declare which attribute belongs to which language: @@ -106,7 +106,7 @@ client.index('INDEX_NAME').updateLocalizedAttributes([ #### Specifying locales for queries -When performing searches, you can specify [query locales](/reference/api/search#query-locales) to ensure queries are tokenized with the correct rules. +When performing searches, you can specify [query locales](/reference/api/search/search-with-post#body-locales) to ensure queries are tokenized with the correct rules. ```javascript client.index('INDEX_NAME').search('schiff', { locales: ['deu'] }) diff --git a/learn/indexing/optimize_indexing_performance.mdx b/learn/indexing/optimize_indexing_performance.mdx index 78b4ff14da..521315ef9f 100644 --- a/learn/indexing/optimize_indexing_performance.mdx +++ b/learn/indexing/optimize_indexing_performance.mdx @@ -5,7 +5,7 @@ description: Learn how to analyze the `progressTrace` to identify and resolve in # Optimize indexing performance by analyzing batch statistics -Indexing performance can vary significantly depending on your dataset, index settings, and hardware. The [batch object](/reference/api/batches) provides information about the progress of asynchronous indexing operations. +Indexing performance can vary significantly depending on your dataset, index settings, and hardware. The [batch object](/reference/api/async-task-management/list-batches) provides information about the progress of asynchronous indexing operations. The `progressTrace` field within the batch object offers a detailed breakdown of where time is spent during the indexing process. Use this data to identify bottlenecks and improve indexing speed. @@ -38,19 +38,19 @@ Focus on the **longest-running steps** and investigate which index settings or d | Description | Optimization | |--------------|--------------| -| Extracts and merges filterable attributes. | Keep the number of [**filterable attributes**](/reference/api/settings#filterable-attributes) to a minimum. | +| Extracts and merges filterable attributes. | Keep the number of [**filterable attributes**](/reference/api/settings/get-filterableattributes) to a minimum. | ### `extracting words` and `merging word caches` | Description | Optimization | |--------------|--------------| -| Tokenizes text and builds the inverted index. | Ensure the [searchable attributes](/reference/api/settings#searchable-attributes) list only includes the fields you want to be checked for query word matches. | +| Tokenizes text and builds the inverted index. | Ensure the [searchable attributes](/reference/api/settings/get-searchableattributes) list only includes the fields you want to be checked for query word matches. | ### `extracting word proximity` and `merging word proximity` | Description | Optimization | |--------------|--------------| -| Builds data structures for phrase and attribute ranking. | Lower the precision of this operation by setting [proximity precision](/reference/api/settings#proximity-precision) to `byAttribute` | +| Builds data structures for phrase and attribute ranking. | Lower the precision of this operation by setting [proximity precision](/reference/api/settings/update-proximity-precision) to `byAttribute` | ### `waiting for database writes` @@ -68,26 +68,26 @@ Focus on the **longest-running steps** and investigate which index settings or d | Description | Optimization | |--------------|--------------| -| Processes equality or comparison filters. | - Disable unused [**filter features**](/reference/api/settings#features), such as comparison operators on string values.
- Reduce the number of [**sortable attributes**](reference/api/settings#sortable-attributes). | +| Processes equality or comparison filters. | - Disable unused [**filter features**](/reference/api/settings/get-features), such as comparison operators on string values.
- Reduce the number of [**sortable attributes**](/reference/api/settings/get-sortableattributes). | ### `post processing facets > facet search` | Description | Optimization | |--------------|--------------| -| Builds structures for the [facet search API](/reference/api/facet_search). | If you don’t use the facet search API, [disable it](/reference/api/settings#update-facet-search-settings).| +| Builds structures for the [facet search API](/reference/api/facet-search/search-in-facets). | If you don’t use the facet search API, [disable it](/reference/api/settings/update-facetsearch).| ### Embeddings | Trace key | Description | Optimization | |------------|--------------|--------------| -| `writing embeddings to database` | Time spent saving vector embeddings. | Use embedding vectors with fewer dimensions.
- Consider enabling [binary quantization](/reference/api/settings#binaryquantized). | -| `extracting embeddings` | Time spent extracting embeddings from embedding providers' responses. | Reduce the amount of data sent to embeddings provider.
- [Include fewer attributes in `documentTemplate`](/learn/ai_powered_search/document_template_best_practices).
- [Reduce maximum size of the document template](/reference/api/settings#update-embedder-settings).
- [Disabling embedding regeneration on document update](/reference/api/documents#vectors).
- If using a third-party service like OpenAI, upgrade your account to a higher tier.| +| `writing embeddings to database` | Time spent saving vector embeddings. | Use embedding vectors with fewer dimensions.
- Consider enabling [binary quantization](/reference/api/settings/update-embedders). | +| `extracting embeddings` | Time spent extracting embeddings from embedding providers' responses. | Reduce the amount of data sent to embeddings provider.
- [Include fewer attributes in `documentTemplate`](/learn/ai_powered_search/document_template_best_practices).
- [Reduce maximum size of the document template](/reference/api/settings/update-embedders).
- [Disabling embedding regeneration on document update](/reference/api/documents/add-or-update-documents).
- If using a third-party service like OpenAI, upgrade your account to a higher tier.| ### `post processing words > word prefix *` | Description | Optimization | |--------------|--------------| -| | Builds prefix data for autocomplete. Allows matching documents that begin with a specific query term, instead of only exact matches.| Disable [**prefix search**](/reference/api/settings#prefix-search) (`prefixSearch: disabled`). _This can severely impact search result relevancy._ | +| | Builds prefix data for autocomplete. Allows matching documents that begin with a specific query term, instead of only exact matches.| Disable [**prefix search**](/reference/api/settings/get-prefix-search) (`prefixSearch: disabled`). _This can severely impact search result relevancy._ | ### `post processing words > word fst` diff --git a/learn/relevancy/custom_ranking_rules.mdx b/learn/relevancy/custom_ranking_rules.mdx index b98fc63829..5bef69f454 100644 --- a/learn/relevancy/custom_ranking_rules.mdx +++ b/learn/relevancy/custom_ranking_rules.mdx @@ -18,7 +18,7 @@ To add a custom ranking rule, you have to communicate the attribute name followe **The attribute must have either a numeric or a string value** in all of the documents contained in that index. -You can add this rule to the existing list of ranking rules using the [update settings endpoint](/reference/api/settings#update-settings) or [update ranking rules endpoint](/reference/api/settings#update-ranking-rules). +You can add this rule to the existing list of ranking rules using the [update settings endpoint](/reference/api/settings/update-all-settings) or [update ranking rules endpoint](/reference/api/settings/update-rankingrules). ## How to use custom ranking rules @@ -62,7 +62,7 @@ The following array includes all built-in ranking rules and places the custom ru ## Sorting at search time and custom ranking rules -Meilisearch allows users to define [sorting order at query time](/learn/filtering_and_sorting/sort_search_results) by using the [`sort` search parameter](/reference/api/search#sort). There is some overlap between sorting and custom ranking rules, but the two do have different uses. +Meilisearch allows users to define [sorting order at query time](/learn/filtering_and_sorting/sort_search_results) by using the [`sort` search parameter](/reference/api/search/search-with-post#body-sort). There is some overlap between sorting and custom ranking rules, but the two do have different uses. In general, `sort` will be most useful when you want to allow users to define what type of results they want to see first. A good use-case for `sort` is creating a webshop interface where customers can sort products by descending or ascending product price. diff --git a/learn/relevancy/displayed_searchable_attributes.mdx b/learn/relevancy/displayed_searchable_attributes.mdx index d910137bd0..0313b1171c 100644 --- a/learn/relevancy/displayed_searchable_attributes.mdx +++ b/learn/relevancy/displayed_searchable_attributes.mdx @@ -12,11 +12,11 @@ By default, whenever a document is added to Meilisearch, all new attributes foun - [`displayedAttributes`](/learn/relevancy/displayed_searchable_attributes#displayed-fields): Attributes whose fields are displayed in documents - [`searchableAttributes`](/learn/relevancy/displayed_searchable_attributes#the-searchableattributes-list): Attributes whose values are searched for matching query words -By default, every field in a document is **displayed** and **searchable**. These properties can be modified in the [settings](/reference/api/settings). +By default, every field in a document is **displayed** and **searchable**. These properties can be modified in the [settings](/reference/api/settings/list-all-settings). ## Displayed fields -The fields whose attributes are added to the [`displayedAttributes` list](/reference/api/settings#displayed-attributes) are **displayed in each matching document**. +The fields whose attributes are added to the [`displayedAttributes` list](/reference/api/settings/get-displayedattributes) are **displayed in each matching document**. Documents returned upon search contain only displayed fields. If a field attribute is not in the displayed-attribute list, the field won't be added to the returned documents. @@ -55,15 +55,15 @@ There are two possible modes for the `searchableAttributes` list. **By default, all attributes are automatically added to the `searchableAttributes` list in their order of appearance.** This means that the initial order will be based on the order of attributes in the first document indexed, with each new attribute found in subsequent documents added at the end of this list. -This default behavior is indicated by a `searchableAttributes` value of `["*"]`. To verify the current value of your `searchableAttributes` list, use the [get searchable attributes endpoint](/reference/api/settings#get-searchable-attributes). +This default behavior is indicated by a `searchableAttributes` value of `["*"]`. To verify the current value of your `searchableAttributes` list, use the [get searchable attributes endpoint](/reference/api/settings/get-searchableattributes). -If you'd like to restore your searchable attributes list to this default behavior, [set `searchableAttributes` to an empty array `[]`](/reference/api/settings#update-searchable-attributes) or use the [reset searchable attributes endpoint](/reference/api/settings#reset-searchable-attributes). +If you'd like to restore your searchable attributes list to this default behavior, [set `searchableAttributes` to an empty array `[]`](/reference/api/settings/update-searchableattributes) or use the [reset searchable attributes endpoint](/reference/api/settings/delete-searchableattributes). #### Manual -You may want to make some attributes non-searchable, or change the [attribute ranking order](/learn/relevancy/attribute_ranking_order) after documents have been indexed. To do so, place the attributes in the desired order and send the updated list using the [update searchable attributes endpoint](/reference/api/settings#update-searchable-attributes). +You may want to make some attributes non-searchable, or change the [attribute ranking order](/learn/relevancy/attribute_ranking_order) after documents have been indexed. To do so, place the attributes in the desired order and send the updated list using the [update searchable attributes endpoint](/reference/api/settings/update-searchableattributes). -After manually updating the `searchableAttributes` list, **subsequent new attributes will no longer be automatically added** unless the settings are [reset](/reference/api/settings#reset-searchable-attributes). +After manually updating the `searchableAttributes` list, **subsequent new attributes will no longer be automatically added** unless the settings are [reset](/reference/api/settings/delete-searchableattributes). Due to an implementation bug, manually updating `searchableAttributes` will change the displayed order of document fields in the JSON response. This behavior is inconsistent and will be fixed in a future release. @@ -77,7 +77,7 @@ Suppose that you manage a database of movies with the following fields: `id`, `o ### Customizing attributes to search on at search time -By default, all queries search through all attributes in the `searchableAttributes` list. Use [the `attributesToSearchOn` search parameter](/reference/api/search#customize-attributes-to-search-on-at-search-time) to restrict specific queries to a subset of your index's `searchableAttributes`. +By default, all queries search through all attributes in the `searchableAttributes` list. Use [the `attributesToSearchOn` search parameter](/reference/api/search/search-with-post#body-attributes-to-search-on) to restrict specific queries to a subset of your index's `searchableAttributes`. ## Data storing 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/relevancy/ranking_rules.mdx b/learn/relevancy/ranking_rules.mdx index 16e28edf2b..c7efe06415 100644 --- a/learn/relevancy/ranking_rules.mdx +++ b/learn/relevancy/ranking_rules.mdx @@ -24,7 +24,7 @@ Meilisearch contains seven built-in ranking rules in the following order: ] ``` -Depending on your needs, you might want to change this order. To do so, use the [update settings endpoint](/reference/api/settings#update-settings) or [update ranking rules endpoint](/reference/api/settings#update-ranking-rules). +Depending on your needs, you might want to change this order. To do so, use the [update settings endpoint](/reference/api/settings/update-all-settings) or [update ranking rules endpoint](/reference/api/settings/update-rankingrules). ## 1. Words @@ -46,7 +46,7 @@ Results are sorted by **increasing number of typos**. Returns documents that mat Results are sorted by **increasing distance between matched query terms**. Returns documents where query terms occur close together and in the same order as the query string first. -[It is possible to lower the precision of this ranking rule.](/reference/api/settings#proximity-precision) This may significantly improve indexing performance. In a minority of use cases, lowering precision may also lead to lower search relevancy for queries using multiple search terms. +[It is possible to lower the precision of this ranking rule.](/reference/api/settings/update-proximity-precision) This may significantly improve indexing performance. In a minority of use cases, lowering precision may also lead to lower search relevancy for queries using multiple search terms. ## 4. Attribute rank @@ -75,7 +75,7 @@ For most use-cases, we recommend using `attributeRank` and `wordPosition` separa Results are sorted **according to parameters decided at query time**. When the `sort` ranking rule is in a higher position, sorting is exhaustive: results will be less relevant but follow the user-defined sorting order more closely. When `sort` is in a lower position, sorting is relevant: results will be very relevant but might not always follow the order defined by the user. -Differently from other ranking rules, sort is only active for queries containing the [`sort` search parameter](/reference/api/search#sort). If a search request does not contain `sort`, or if its value is invalid, this rule will be ignored. +Differently from other ranking rules, sort is only active for queries containing the [`sort` search parameter](/reference/api/search/search-with-post#body-sort). If a search request does not contain `sort`, or if its value is invalid, this rule will be ignored. ## 7. Exactness diff --git a/learn/relevancy/ranking_score.mdx b/learn/relevancy/ranking_score.mdx index 32ccd59d12..36598ac49d 100644 --- a/learn/relevancy/ranking_score.mdx +++ b/learn/relevancy/ranking_score.mdx @@ -4,7 +4,7 @@ sidebarTitle: Ranking score description: This article explains how the order of attributes in the `searchableAttributes` array impacts search result relevancy. --- -When using the [`showRankingScore` search parameter](/reference/api/search#ranking-score), Meilisearch adds a global ranking score field, `_rankingScore`, to each document. The `_rankingScore` is between `0.0` and `1.0`. The higher the ranking score, the more relevant the document. +When using the [`showRankingScore` search parameter](/reference/api/search/search-with-post#body-show-ranking-score), Meilisearch adds a global ranking score field, `_rankingScore`, to each document. The `_rankingScore` is between `0.0` and `1.0`. The higher the ranking score, the more relevant the document. Ranking rules sort documents either by relevancy (`words`, `typo`, `proximity`, `exactness`, `attributeRank`, `wordPosition`) or by the value of a field (`sort`). Since `sort` doesn't rank documents by relevancy, it does not influence the `_rankingScore`. diff --git a/learn/relevancy/relevancy.mdx b/learn/relevancy/relevancy.mdx index 93710b111c..9516df9be6 100644 --- a/learn/relevancy/relevancy.mdx +++ b/learn/relevancy/relevancy.mdx @@ -10,10 +10,10 @@ Meilisearch has a number of features for fine-tuning the relevancy of search res ## Behavior -Each index possesses a list of ranking rules stored as an array in the [settings object](/reference/api/settings). This array is fully customizable, meaning you can delete existing rules, add new ones, and reorder them as needed. +Each index possesses a list of ranking rules stored as an array in the [settings object](/reference/api/settings/list-all-settings). This array is fully customizable, meaning you can delete existing rules, add new ones, and reorder them as needed. Meilisearch uses a [bucket sort](https://en.wikipedia.org/wiki/Bucket_sort) algorithm to rank documents whenever a search query is made. The first ranking rule applies to all documents, while each subsequent rule is only applied to documents considered equal under the previous rule as a tiebreaker. -**The order in which ranking rules are applied matters.** The first rule in the array has the most impact, and the last rule has the least. Our default configuration meets most standard needs, but [you can change it](/reference/api/settings#update-ranking-rules). +**The order in which ranking rules are applied matters.** The first rule in the array has the most impact, and the last rule has the least. Our default configuration meets most standard needs, but [you can change it](/reference/api/settings/update-rankingrules). Deleting a rule means that Meilisearch will no longer sort results based on that rule. For example, **if you delete the [typo ranking rule](/learn/relevancy/ranking_rules#2-typo), documents with typos will still be considered during search**, but they will no longer be sorted by increasing number of typos. diff --git a/learn/relevancy/synonyms.mdx b/learn/relevancy/synonyms.mdx index 511be337f6..3a59d57f66 100644 --- a/learn/relevancy/synonyms.mdx +++ b/learn/relevancy/synonyms.mdx @@ -6,7 +6,7 @@ description: Use Meilisearch synonyms to indicate sets of query terms which shou import CodeSamplesSynonymsGuide1 from '/snippets/generated-code-samples/code_samples_synonyms_guide_1.mdx'; -If multiple words have an equivalent meaning in your dataset, you can [create a list of synonyms](/reference/api/settings#update-synonyms). This will make your search results more relevant. +If multiple words have an equivalent meaning in your dataset, you can [create a list of synonyms](/reference/api/settings/update-synonyms). This will make your search results more relevant. Words set as synonyms won't always return the same results. With the default settings, the `movies` dataset should return 547 results for `great` and 66 for `fantastic`. Let's set them as synonyms: @@ -53,7 +53,7 @@ However, if you search for `iphone`, documents containing `phone` will be ranked ### Example -To create a one-way synonym list, this is the JSON syntax that should be [added to the settings](/reference/api/settings#update-synonyms). +To create a one-way synonym list, this is the JSON syntax that should be [added to the settings](/reference/api/settings/update-synonyms). ```json { @@ -96,7 +96,7 @@ When a search is done with one of these words, all synonyms will be considered a ### Example -To create a mutual association between four words, this is the JSON syntax that should be [added to the settings](/reference/api/settings#update-synonyms). +To create a mutual association between four words, this is the JSON syntax that should be [added to the settings](/reference/api/settings/update-synonyms). ```json { @@ -125,7 +125,7 @@ To create a mutual association between four words, this is the JSON syntax that ## Multi-word synonyms -Meilisearch treats multi-word synonyms as [phrases](/reference/api/search#phrase-search). +Meilisearch treats multi-word synonyms as [phrases](/reference/api/search/search-with-post#body-q). ### Example diff --git a/learn/relevancy/typo_tolerance_calculations.mdx b/learn/relevancy/typo_tolerance_calculations.mdx index aec2c3a2c6..6ba33e1cb4 100644 --- a/learn/relevancy/typo_tolerance_calculations.mdx +++ b/learn/relevancy/typo_tolerance_calculations.mdx @@ -4,7 +4,7 @@ sidebarTitle: Typo tolerance calculations description: Typo tolerance helps users find relevant results even when their search queries contain spelling mistakes or typos. --- -Typo tolerance helps users find relevant results even when their search queries contain spelling mistakes or typos, for example, typing `phnoe` instead of `phone`. You can [configure the typo tolerance feature for each index](/reference/api/settings#update-typo-tolerance-settings). +Typo tolerance helps users find relevant results even when their search queries contain spelling mistakes or typos, for example, typing `phnoe` instead of `phone`. You can [configure the typo tolerance feature for each index](/reference/api/settings/update-typotolerance). Meilisearch uses a prefix [Levenshtein algorithm](https://en.wikipedia.org/wiki/Levenshtein_distance) to determine if a word in a document could be a possible match for a query term. diff --git a/learn/relevancy/typo_tolerance_settings.mdx b/learn/relevancy/typo_tolerance_settings.mdx index 62766b799d..f48b427f0e 100644 --- a/learn/relevancy/typo_tolerance_settings.mdx +++ b/learn/relevancy/typo_tolerance_settings.mdx @@ -9,7 +9,7 @@ import CodeSamplesTypoToleranceGuide4 from '/snippets/generated-code-samples/cod import CodeSamplesTypoToleranceGuide3 from '/snippets/generated-code-samples/code_samples_typo_tolerance_guide_3.mdx'; import CodeSamplesTypoToleranceGuide2 from '/snippets/generated-code-samples/code_samples_typo_tolerance_guide_2.mdx'; -Typo tolerance helps users find relevant results even when their search queries contain spelling mistakes or typos, for example, typing `phnoe` instead of `phone`. You can [configure the typo tolerance feature for each index](/reference/api/settings#update-typo-tolerance-settings). +Typo tolerance helps users find relevant results even when their search queries contain spelling mistakes or typos, for example, typing `phnoe` instead of `phone`. You can [configure the typo tolerance feature for each index](/reference/api/settings/update-typotolerance). ## `enabled` diff --git a/learn/resources/experimental_features_overview.mdx b/learn/resources/experimental_features_overview.mdx index 6e4bdcecae..5f65602276 100644 --- a/learn/resources/experimental_features_overview.mdx +++ b/learn/resources/experimental_features_overview.mdx @@ -17,7 +17,7 @@ Meilisearch makes experimental features available expecting they will become sta Experimental features fall into two groups based on how they are activated or deactivated: 1. Those that are activated at launch with a command-line flag or environment variable -2. Those that are activated with the [`/experimental-features` API route](/reference/api/experimental_features). +2. Those that are activated with the [`/experimental-features` API route](/reference/api/experimental-features/list-experimental-features). ## Activating experimental features at launch @@ -35,7 +35,7 @@ Activating or deactivating experimental features this way requires you to relaun ### Activating experimental features during runtime -Some experimental features can be activated via an HTTP call using the [`/experimental-features` API route](/reference/api/experimental_features): +Some experimental features can be activated via an HTTP call using the [`/experimental-features` API route](/reference/api/experimental-features/list-experimental-features): @@ -52,14 +52,14 @@ Activating or deactivating experimental features this way does not require you t | [Replication parameters](/learn/self_hosted/configure_meilisearch_at_launch) | Alters task processing for clustering compatibility | CLI flag or environment variable | | [Search queue size](/learn/self_hosted/configure_meilisearch_at_launch) | Configure maximum number of concurrent search requests | CLI flag or environment variable | | [`CONTAINS` filter operator](/learn/filtering_and_sorting/filter_expression_reference#contains) | Enables usage of `CONTAINS` with the `filter` search parameter | API route | -| [Edit documents with function](/reference/api/documents#update-documents-with-function) | Use a RHAI function to edit documents directly in the Meilisearch database | API route | -| [`/network` route](/reference/api/network) | Enable `/network` route | API route | +| [Edit documents with function](/reference/api/documents/edit-documents-by-function) | Use a RHAI function to edit documents directly in the Meilisearch database | API route | +| [`/network` route](/reference/api/network/get-network) | Enable `/network` route | API route | | [Dumpless upgrade](/learn/self_hosted/configure_meilisearch_at_launch#dumpless-upgrade) | Upgrade Meilisearch without generating a dump | API route | -| [Composite embedders](/reference/api/settings#composite-embedders) | Enable composite embedders | API route | +| [Composite embedders](/reference/api/settings/get-embedders) | Enable composite embedders | API route | | [Search query embedding cache](/learn/self_hosted/configure_meilisearch_at_launch#search-query-embedding-cache) | Enable a cache for search query embeddings | CLI flag or environment variable | | [Uncompressed snapshots](/learn/self_hosted/configure_meilisearch_at_launch#uncompressed-snapshots) | Disable snapshot compaction | CLI flag or environment variable | | [Maximum batch payload size](/learn/self_hosted/configure_meilisearch_at_launch#maximum-batch-payload-size) | Limit batch payload size | CLI flag or environment variable | -| [Multimodal search](/reference/api/settings) | Enable multimodal search | API route | +| [Multimodal search](/reference/api/settings/list-all-settings) | Enable multimodal search | API route | | [Disable new indexer](/learn/self_hosted/configure_meilisearch_at_launch) | Use previous settings indexer | CLI flag or environment variable | -| [Experimental vector store](/reference/api/settings) | Enables index setting to use experimental vector store | API route | +| [Experimental vector store](/reference/api/settings/list-all-settings) | Enables index setting to use experimental vector store | API route | | [Search personalization](/learn/personalization/making_personalized_search_queries) | Enables search personalization | CLI flag or environment variable | diff --git a/learn/resources/faq.mdx b/learn/resources/faq.mdx index c59353f884..7ee3449dd0 100644 --- a/learn/resources/faq.mdx +++ b/learn/resources/faq.mdx @@ -26,11 +26,11 @@ Besides, we published a [comparison between Meilisearch and other search engines The `400 - Bad request` response often means that your data is not in an expected format. You might have extraneous commas, mismatched brackets, missing quotes, etc. Meilisearch API accepts JSON, CSV, and NDJSON formats. -When [adding or replacing documents](/reference/api/documents#add-or-replace-documents), you must enclose them in an array even if there is only one new document. +When [adding or replacing documents](/reference/api/documents/add-or-replace-documents), you must enclose them in an array even if there is only one new document. ## I have uploaded my documents, but I get no result when I search in my index -Your document upload probably failed. To understand why, please check the status of the document addition task using the returned [`taskUid`](/reference/api/tasks#get-one-task). If the task failed, the response should contain an `error` object. +Your document upload probably failed. To understand why, please check the status of the document addition task using the returned [`taskUid`](/reference/api/async-task-management/get-task). If the task failed, the response should contain an `error` object. Here is an example of a failed task: @@ -100,7 +100,7 @@ The following factors have a great impact on the size of your database (in no pa - The number of different words present in the dataset -Beware heavily multi-lingual datasets and datasets with many unique words, such as IDs or URLs, as they can slow search speed and greatly increase database size. If you do have ID or URL fields, [make them non-searchable](/reference/api/settings#update-searchable-attributes) unless they are useful as search criteria. +Beware heavily multi-lingual datasets and datasets with many unique words, such as IDs or URLs, as they can slow search speed and greatly increase database size. If you do have ID or URL fields, [make them non-searchable](/reference/api/settings/update-searchableattributes) unless they are useful as search criteria. ### Search speed @@ -125,9 +125,9 @@ In general, we recommend the former. However, if you need to reduce the size of - **More relevancy rules => a larger database** - The proximity [ranking rule](/learn/relevancy/ranking_rules) alone can be responsible for almost 80% of database size -- Adding many attributes to [`filterableAttributes`](/reference/api/settings#filterable-attributes) also consumes a large amount of disk space +- Adding many attributes to [`filterableAttributes`](/reference/api/settings/get-filterableattributes) also consumes a large amount of disk space - Multi-lingual datasets are costly, so split your dataset—one language per index -- [Stop words](/reference/api/settings#stop-words) are essential to reducing database size +- [Stop words](/reference/api/settings/get-stopwords) are essential to reducing database size - Not all attributes need to be [searchable](/learn/relevancy/displayed_searchable_attributes#searchable-fields). Avoid indexing unique IDs. ## Why does Meilisearch send data to Segment? Does Meilisearch track its users? diff --git a/learn/resources/known_limitations.mdx b/learn/resources/known_limitations.mdx index a4bc74398d..fe7e8b4e97 100644 --- a/learn/resources/known_limitations.mdx +++ b/learn/resources/known_limitations.mdx @@ -6,17 +6,17 @@ description: Meilisearch has a number of known limitations. These are hard limit Meilisearch has a number of known limitations. Some of these limitations are the result of intentional design trade-offs, while others can be attributed to [LMDB](/learn/engine/storage), the key-value store that Meilisearch uses under the hood. -This article covers hard limits that cannot be altered. Meilisearch also has some default limits that _can_ be changed, such as a [default payload limit of 100MB](/learn/self_hosted/configure_meilisearch_at_launch#payload-limit-size) and a [default search limit of 20 hits](/reference/api/search#limit). +This article covers hard limits that cannot be altered. Meilisearch also has some default limits that _can_ be changed, such as a [default payload limit of 100MB](/learn/self_hosted/configure_meilisearch_at_launch#payload-limit-size) and a [default search limit of 20 hits](/reference/api/search/search-with-post#body-limit). ## Maximum Meilisearch Cloud upload size **Limitation:** The maximum file upload size when using the Meilisearch Cloud interface is 20mb. -**Explanation:** Handling large files may result in degraded user experience and performance issues. To add datasets larger than 20mb to a Meilisearch Cloud project, use the [add documents endpoint](/reference/api/documents#add-or-replace-documents) or [`meilisearch-importer`](https://github.com/meilisearch/meilisearch-importer). +**Explanation:** Handling large files may result in degraded user experience and performance issues. To add datasets larger than 20mb to a Meilisearch Cloud project, use the [add documents endpoint](/reference/api/documents/add-or-replace-documents) or [`meilisearch-importer`](https://github.com/meilisearch/meilisearch-importer). ## Maximum number of query words -**Limitation:** The maximum number of terms taken into account for each [search query](/reference/api/search#query-q) is 10. If a search query includes more than 10 words, all words after the 10th will be ignored. +**Limitation:** The maximum number of terms taken into account for each [search query](/reference/api/search/search-with-post#body-q) is 10. If a search query includes more than 10 words, all words after the 10th will be ignored. **Explanation:** Queries with many search terms can lead to long response times. This goes against our goal of providing a fast search-as-you-type experience. @@ -87,7 +87,7 @@ If your query is `Hello - World`: ## Maximum filter depth -**Limitation:** searches using the [`filter` search parameter](/reference/api/search#filter) may have a maximum filtering depth of 2000. +**Limitation:** searches using the [`filter` search parameter](/reference/api/search/search-with-post#body-filter) may have a maximum filtering depth of 2000. **Explanation:** mixing and alternating `AND` and `OR` operators filters creates nested logic structures. Excessive nesting can lead to stack overflow. @@ -135,7 +135,7 @@ user = 1 OR (user = 2 AND user = 3) OR (user = 4 AND user = 5) OR user = 6 **Limitation:** By default, Meilisearch returns up to 1000 documents per search. -**Explanation:** Meilisearch limits the maximum amount of returned search results to protect your database from malicious scraping. You may change this by using the `maxTotalHits` property of the [pagination index settings](/reference/api/settings#pagination-object). `maxTotalHits` only applies to the [search route](/reference/api/search) and has no effect on the [get documents with POST](/reference/api/documents#get-documents-with-post) and [get documents with GET](/reference/api/documents#get-documents-with-get) endpoints. +**Explanation:** Meilisearch limits the maximum amount of returned search results to protect your database from malicious scraping. You may change this by using the `maxTotalHits` property of the [pagination index settings](/reference/api/settings/update-pagination). `maxTotalHits` only applies to the [search route](/reference/api/search/search-with-post) and has no effect on the [get documents with POST](/reference/api/documents/documents-by-query-post) and [get documents with GET](/reference/api/documents/list-documents-with-get) endpoints. ## Large datasets and internal errors @@ -163,6 +163,6 @@ user = 1 OR (user = 2 AND user = 3) OR (user = 4 AND user = 5) OR user = 6 ## Facet Search limitation -**Limitation:** When [searching for facet values](/reference/api/facet_search), Meilisearch returns a maximum of 100 facets. +**Limitation:** When [searching for facet values](/reference/api/facet-search/search-in-facets), Meilisearch returns a maximum of 100 facets. **Explanation:** the limit to the maximum number of returned facets has been implemented to offer a good balance between usability and comprehensive results. Facet search allows users to filter a large list of facets so they may quickly find categories relevant to their query. This is different from searching through an index of documents. Faceting index settings such as the `maxValuesPerFacet` limit do not impact facet search and only affect queries searching through documents. diff --git a/learn/security/differences_master_api_keys.mdx b/learn/security/differences_master_api_keys.mdx index 9615ffd616..f3a860a36c 100644 --- a/learn/security/differences_master_api_keys.mdx +++ b/learn/security/differences_master_api_keys.mdx @@ -20,7 +20,7 @@ Exposing the master key can give malicious users complete control over your Meil ## API keys -API keys grant access to a specific set of indexes, routes, and endpoints. You can also configure them to expire after a certain date. Use the [`/keys` route](/reference/api/keys) to create, configure, and delete API keys. +API keys grant access to a specific set of indexes, routes, and endpoints. You can also configure them to expire after a certain date. Use the [`/keys` route](/reference/api/keys/list-api-keys) to create, configure, and delete API keys. **Use API keys for all API operations except API key management.** This includes search, configuring index settings, managing indexes, and adding and updating documents. diff --git a/learn/security/generate_tenant_token_scratch.mdx b/learn/security/generate_tenant_token_scratch.mdx index 00b0fe16df..2df19ce1f0 100644 --- a/learn/security/generate_tenant_token_scratch.mdx +++ b/learn/security/generate_tenant_token_scratch.mdx @@ -33,7 +33,7 @@ First, create a set of search rules: } ``` -Next, find your default search API key. Query the [get an API key endpoint](/reference/api/keys#get-one-key) and inspect the `uid` field to obtain your API key's UID: +Next, find your default search API key. Query the [get an API key endpoint](/reference/api/keys/get-api-key) and inspect the `uid` field to obtain your API key's UID: ```sh curl \ diff --git a/learn/security/generate_tenant_token_sdk.mdx b/learn/security/generate_tenant_token_sdk.mdx index 852828323f..09a5349cc4 100644 --- a/learn/security/generate_tenant_token_sdk.mdx +++ b/learn/security/generate_tenant_token_sdk.mdx @@ -29,7 +29,7 @@ First, import the SDK. Then create a set of [search rules](/learn/security/tenan Search rules must be an object where each key corresponds to an index in your instance. You may configure any number of filters for each index. -Next, find your default search API key. Query the [get an API key endpoint](/reference/api/keys#get-one-key) and inspect the `uid` field to obtain your API key's UID: +Next, find your default search API key. Query the [get an API key endpoint](/reference/api/keys/get-api-key) and inspect the `uid` field to obtain your API key's UID: ```sh curl \ diff --git a/learn/security/generate_tenant_token_third_party.mdx b/learn/security/generate_tenant_token_third_party.mdx index 0c8369fa16..80e50e5fff 100644 --- a/learn/security/generate_tenant_token_third_party.mdx +++ b/learn/security/generate_tenant_token_third_party.mdx @@ -28,7 +28,7 @@ First, create a set of search rules: } ``` -Next, find your default search API key. Query the [get an API key endpoint](/reference/api/keys#get-one-key) and inspect the `uid` field to obtain your API key's UID: +Next, find your default search API key. Query the [get an API key endpoint](/reference/api/keys/get-api-key) and inspect the `uid` field to obtain your API key's UID: ```sh curl \ diff --git a/learn/security/tenant_token_reference.mdx b/learn/security/tenant_token_reference.mdx index b784e50b09..80087c2c47 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#body-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: @@ -151,9 +151,9 @@ Tenant token payloads must include an API key UID to validate requests. The UID } ``` -Query the [get one API key endpoint](/reference/api/keys) to obtain an API key's UID. +Query the [get one API key endpoint](/reference/api/keys/get-api-key) to obtain an API key's UID. -The UID must indicate 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. +The UID must indicate an API key with access to [the search action](/reference/api/keys/create-api-key#body-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**. Avoid exposing API keys and **always generate tokens on your application's back end**. @@ -176,7 +176,7 @@ A token's expiration date cannot exceed its parent API key's expiration date. Setting a token expiry date is optional, but highly recommended. Tokens without an expiry date remain valid indefinitely and may be a security liability. -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/security/tenant_tokens.mdx b/learn/security/tenant_tokens.mdx index fd87830cd2..9577855090 100644 --- a/learn/security/tenant_tokens.mdx +++ b/learn/security/tenant_tokens.mdx @@ -28,7 +28,7 @@ Tenant tokens are small packages of encrypted data presenting proof a user can a To use tokens in Meilisearch, you only need to have a system for token generation in place. The quickest method to generate tenant tokens is [using one of our official SDKs](#generating-tenant-tokens-with-an-sdk). It is also possible to [generate a token from scratch](#generating-tenant-tokens-without-a-meilisearch-sdk). -Tenant tokens do not require you to configure any specific [instance options](/learn/self_hosted/configure_meilisearch_at_launch) or [index settings](/reference/api/settings). They are also meant to be short-lived—Meilisearch does not store nor keeps track of generated tokens. +Tenant tokens do not require you to configure any specific [instance options](/learn/self_hosted/configure_meilisearch_at_launch) or [index settings](/reference/api/settings/list-all-settings). They are also meant to be short-lived—Meilisearch does not store nor keeps track of generated tokens. ## Generating tenant tokens with an SDK @@ -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/create-api-key#body-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. @@ -173,7 +173,7 @@ Search rules are a set of instructions defining search parameters that will be e The object key must be an index name. You may use the `*` wildcard instead of a specific index name—in this case, search rules will be applied to all indexes. -The object value must consist of `search_parameter:value` pairs. Currently, **tenant tokens only support the `filter` [search parameter](/reference/api/search#filter)**. +The object value must consist of `search_parameter:value` pairs. Currently, **tenant tokens only support the `filter` [search parameter](/reference/api/search/search-with-post#body-filter)**. In this example, all queries across all indexes will only return documents whose `user_id` equals `1`: @@ -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#body-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/create-api-key#body-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/configure_meilisearch_at_launch.mdx b/learn/self_hosted/configure_meilisearch_at_launch.mdx index 2f997dde49..0011603b88 100644 --- a/learn/self_hosted/configure_meilisearch_at_launch.mdx +++ b/learn/self_hosted/configure_meilisearch_at_launch.mdx @@ -9,7 +9,7 @@ import { NoticeTag } from '/snippets/notice_tag.mdx'; When self-hosting Meilisearch, you can configure your instance at launch with **command-line options**, **environment variables**, or a **configuration file**. -These startup options affect your entire Meilisearch instance, not just a single index. For settings that affect search within a single index, see [index settings](/reference/api/settings). +These startup options affect your entire Meilisearch instance, not just a single index. For settings that affect search within a single index, see [index settings](/reference/api/settings/list-all-settings). ## Command-line options and flags @@ -213,7 +213,7 @@ Sets the HTTP address and port Meilisearch will use. **Default value**: `None`
**Expected value**: a UTF-8 string of at least 16 bytes -Sets the instance's master key, automatically protecting all routes except [`GET /health`](/reference/api/health). This means you will need a valid API key to access all other endpoints. +Sets the instance's master key, automatically protecting all routes except [`GET /health`](/reference/api/health/get-health). This means you will need a valid API key to access all other endpoints. When `--env` is set to `production`, providing a master key is mandatory. If none is given, or it is under 16 bytes, Meilisearch will throw an error and refuse to launch. @@ -266,7 +266,7 @@ Dumpless upgrade are not currently atomic. It is possible some processes fail an Sets the directory where Meilisearch will create dump files. -[Learn more about creating dumps](/reference/api/dump). +[Learn more about creating dumps](/reference/api/backups/create-dump). ### Import dump @@ -495,7 +495,7 @@ Notifies the configured URL whenever Meilisearch [finishes processing a task](/l The webhook payload contains the list of finished tasks in [ndjson](https://github.com/ndjson/ndjson-spec). For more information, [consult the dedicated task webhook guide](/learn/async/task_webhook). -The task webhook option requires having access to a command-line interface. If you are using Meilisearch Cloud, use the [`/webhooks` API route](/reference/api/webhooks) instead. +The task webhook option requires having access to a command-line interface. If you are using Meilisearch Cloud, use the [`/webhooks` API route](/reference/api/webhooks/list-webhooks) instead. ### Task webhook authorization header 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..ba90c95f2d 100644 --- a/learn/self_hosted/getting_started_with_self_hosted_meilisearch.mdx +++ b/learn/self_hosted/getting_started_with_self_hosted_meilisearch.mdx @@ -113,7 +113,7 @@ After adding documents, you should receive a response like this: } ``` -Use the returned `taskUid` to [check the status](/reference/api/tasks) of your documents: +Use the returned `taskUid` to [check the status](/reference/api/async-task-management/get-task) of your documents: @@ -183,7 +183,7 @@ In the above code sample, the parameter `q` represents the search query. This qu } ``` -By default, Meilisearch only returns the first 20 results for a search query. You can change this using the [`limit` parameter](/reference/api/search#limit). +By default, Meilisearch only returns the first 20 results for a search query. You can change this using the [`limit` parameter](/reference/api/search/search-with-post#body-limit). ## What's next? @@ -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/learn/update_and_migration/algolia_migration.mdx b/learn/update_and_migration/algolia_migration.mdx index 0ccf713e80..c3957f612e 100644 --- a/learn/update_and_migration/algolia_migration.mdx +++ b/learn/update_and_migration/algolia_migration.mdx @@ -171,7 +171,7 @@ One of the key usage differences between Algolia and Meilisearch is how they app **In Algolia,** [API parameters](https://www.algolia.com/doc/api-reference/api-parameters/) is a flexible category that includes both index settings and search parameters. Many API parameters can be used both at indexing time—to set default behavior—or at search time—to override that behavior. -**In Meilisearch,** [index settings](/reference/api/settings) and [search parameters](/reference/api/search#search-parameters) are two distinct categories. Settings affect all searches on an index, while parameters affect the results of a single search. +**In Meilisearch,** [index settings](/reference/api/settings/list-all-settings) and [search parameters](/reference/api/search/search-with-post) are two distinct categories. Settings affect all searches on an index, while parameters affect the results of a single search. Some Meilisearch parameters require index settings to be configured beforehand. For example, you must first configure the index setting `sortableAttributes` to use the search parameter `sort`. However, unlike in Algolia, an index setting can never be used as a parameter and vice versa. diff --git a/learn/update_and_migration/updating.mdx b/learn/update_and_migration/updating.mdx index 65f1b4c7d9..e7517aae4f 100644 --- a/learn/update_and_migration/updating.mdx +++ b/learn/update_and_migration/updating.mdx @@ -138,7 +138,7 @@ Execute the command below to import the dump at launch: ```bash -./meilisearch --experimental-dumpless-upgrade +./meilisearch --experimental-dumpless-upgrade ``` @@ -146,7 +146,7 @@ Execute the command below to import the dump at launch: ```sh -meilisearch --experimental-dumpless-upgrade +meilisearch --experimental-dumpless-upgrade ``` @@ -198,7 +198,7 @@ If you get the `missing_authorization_header` error, you might be using **v0.24
-If your [`pkgVersion`](/reference/api/version#version-object) is 0.21 or above, you can jump to [creating the dump](#create-the-dump). If not, proceed to the next step. +If your [`pkgVersion`](/reference/api/version/get-version) is 0.21 or above, you can jump to [creating the dump](/reference/api/backups/create-dump) (see the [create a dump endpoint](/reference/api/backups/create-dump)). If not, proceed to the next step. ##### Set all fields as displayed attributes @@ -286,7 +286,7 @@ It should return something like this: Due to an error allowing malformed `_geo` fields in Meilisearch **v0.27, v0.28, and v0.29**, you might not be able to import your dump. Please ensure the `_geo` field follows the [correct format](/learn/filtering_and_sorting/geosearch#preparing-documents-for-location-based-search) before creating your dump. -You can then create a dump of your database: +You can then create a dump of your database using the [create a dump endpoint](/reference/api/backups/create-dump): @@ -302,7 +302,7 @@ The server should return a response that looks like this: } ``` -Use the `taskUid` to [track the status](/reference/api/tasks#get-one-task) of your dump. Keep in mind that the process can take some time to complete. +Use the `taskUid` to [track the status](/reference/api/async-task-management/get-task) of your dump. Keep in mind that the process can take some time to complete. For v0.27 and below, the response to your request returns a dump `uid`. Use it with the `/dumps/:dump_uid/status` route to track the request status: @@ -448,7 +448,7 @@ If you're running a **cloud instance**, press `Ctrl`+`C` to stop Meilisearch on meilisearch-setup ``` -If required, set `displayedAttributes` back to its previous value using the [update displayed attributes endpoint](/reference/api/settings#update-displayed-attributes). +If required, set `displayedAttributes` back to its previous value using the [update displayed attributes endpoint](/reference/api/settings/update-displayedattributes). ### Conclusion diff --git a/package-lock.json b/package-lock.json index d25d290a49..8b6531e85f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,1113 +13,1556 @@ }, "devDependencies": { "@ocular-d/vale-bin": "^2.29.6", - "markdownlint-cli": "^0.47.0" + "markdownlint-cli": "^0.47.0", + "mint": "^4.2.108" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "node_modules/@alcalzone/ansi-tokenize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.2.5.tgz", + "integrity": "sha512-3NX/MpTdroi0aKz134A6RC2Gb2iXVECN4QaAXnvCIxxIm3C3AVB1mkUe8NaaiyvOpDfsrqWhYtj+Q6a62RrTsw==", "dev": true, "license": "MIT", "dependencies": { - "@isaacs/balanced-match": "^4.0.1" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=18" } }, - "node_modules/@ocular-d/vale-bin": { - "version": "2.29.6", - "resolved": "https://registry.npmjs.org/@ocular-d/vale-bin/-/vale-bin-2.29.6.tgz", - "integrity": "sha512-Sxp4+H1FV7hg254zYXYLdcFjtW/Bawb8gtp+3Cn3Bi57gDv2Cu7+r20iBtoOOTswA+Zr4fjEbl5T7O/qUjQbow==", + "node_modules/@alcalzone/ansi-tokenize/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "download": "^7.1.0" - }, - "bin": { - "vale": "cli.js" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "node_modules/@ark/schema": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@ark/schema/-/schema-0.55.0.tgz", + "integrity": "sha512-IlSIc0FmLKTDGr4I/FzNHauMn0MADA6bCjT1wauu4k6MyxhC1R9gz0olNpIRvK7lGGDwtc/VO0RUDNvVQW5WFg==", "dev": true, "license": "MIT", "dependencies": { - "@types/ms": "*" + "@ark/util": "0.55.0" } }, - "node_modules/@types/katex": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz", - "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "node_modules/@ark/util": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@ark/util/-/util-0.55.0.tgz", + "integrity": "sha512-aWFNK7aqSvqFtVsl1xmbTjGbg91uqtJV7Za76YGNEwIO4qLjMfyY8flmmbhooYMuqPCO2jyxu8hve943D+w3bA==", "dev": true, "license": "MIT" }, - "node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "node_modules/@asyncapi/parser": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-3.4.0.tgz", + "integrity": "sha512-Sxn74oHiZSU6+cVeZy62iPZMFMvKp4jupMFHelSICCMw1qELmUHPvuZSr+ZHDmNGgHcEpzJM5HN02kR7T4g+PQ==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "@asyncapi/specs": "^6.8.0", + "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0", + "@stoplight/json": "3.21.0", + "@stoplight/json-ref-readers": "^1.2.2", + "@stoplight/json-ref-resolver": "^3.1.5", + "@stoplight/spectral-core": "^1.18.3", + "@stoplight/spectral-functions": "^1.7.2", + "@stoplight/spectral-parsers": "^1.0.2", + "@stoplight/spectral-ref-resolver": "^1.0.3", + "@stoplight/types": "^13.12.0", + "@types/json-schema": "^7.0.11", + "@types/urijs": "^1.19.19", + "ajv": "^8.17.1", + "ajv-errors": "^3.0.0", + "ajv-formats": "^2.1.1", + "avsc": "^5.7.5", + "js-yaml": "^4.1.0", + "jsonpath-plus": "^10.0.0", + "node-fetch": "2.6.7" + } }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "node_modules/@asyncapi/parser/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { - "node": ">=12" + "node": "4.x || >=6.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@asyncapi/specs": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-6.8.1.tgz", + "integrity": "sha512-czHoAk3PeXTLR+X8IUaD+IpT+g+zUvkcgMDJVothBsan+oHN3jfcFcFUNdOPAAFoUCQN1hXF1dWuphWy05THlA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/json-schema": "^7.0.11" } }, - "node_modules/archive-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", - "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "file-type": "^4.2.0" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/archive-type/node_modules/file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "node_modules/@canvas/image-data": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.1.0.tgz", + "integrity": "sha512-QdObRRjRbcXGmM1tmJ+MrHcaz1MftF2+W7YI+MsphnsCrmtyfS0d5qJbk0MeSbUeyM/jCb0hmnkXPsy026L7dA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "license": "MIT" }, - "node_modules/bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "tslib": "^2.4.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/@emnapi/runtime/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } + "license": "0BSD", + "optional": true }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "node_modules/@floating-ui/core": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz", + "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" + "@floating-ui/utils": "^0.2.10" } }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", + "node_modules/@floating-ui/dom": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz", + "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" + "@floating-ui/core": "^1.7.4", + "@floating-ui/utils": "^0.2.10" } }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "peer": true }, - "node_modules/caw": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", - "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "get-proxy": "^2.0.0", - "isurl": "^1.0.0-alpha5", - "tunnel-agent": "^0.6.0", - "url-to-options": "^1.0.1" - }, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=4" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" } }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://opencollective.com/libvips" } }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://opencollective.com/libvips" } }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://opencollective.com/libvips" } }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } }, - "node_modules/commander": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", - "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.6" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" } }, - "node_modules/decode-named-character-reference": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", - "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], "dev": true, - "license": "MIT", - "dependencies": { - "character-entities": "^2.0.0" + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" } }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" } }, - "node_modules/decompress": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", - "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" - }, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" } }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" } }, - "node_modules/decompress-tar": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], "dev": true, - "license": "MIT", + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, "dependencies": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" + "@emnapi/runtime": "^1.2.0" }, "engines": { - "node": ">=4" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/decompress-tar/node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "MIT", + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=4" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/decompress-tarbz2": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" - }, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=4" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/decompress-tarbz2/node_modules/file-type": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" } }, - "node_modules/decompress-targz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "dev": true, "license": "MIT", "dependencies": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/decompress-targz/node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/decompress-unzip": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dev": true, "license": "MIT", "dependencies": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-unzip/node_modules/file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/decompress-unzip/node_modules/get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-unzip/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/decompress/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", "dev": true, "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dev": true, "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, "engines": { - "node": ">=4.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dev": true, "license": "MIT", "dependencies": { - "dequal": "^2.0.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/download": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", - "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dev": true, "license": "MIT", "dependencies": { - "archive-type": "^4.0.0", - "caw": "^2.0.1", - "content-disposition": "^0.5.2", - "decompress": "^4.2.0", - "ext-name": "^5.0.0", - "file-type": "^8.1.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^8.3.1", - "make-dir": "^1.2.0", - "p-event": "^2.1.0", - "pify": "^3.0.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">=6" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dev": true, "license": "MIT", "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, "engines": { - "node": ">=0.12" + "node": ">=18" }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/@inquirer/prompts": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.9.0.tgz", + "integrity": "sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==", "dev": true, "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.0", + "@inquirer/confirm": "^5.1.19", + "@inquirer/editor": "^4.2.21", + "@inquirer/expand": "^4.0.21", + "@inquirer/input": "^4.2.5", + "@inquirer/number": "^3.0.21", + "@inquirer/password": "^4.0.21", + "@inquirer/rawlist": "^4.1.9", + "@inquirer/search": "^3.2.0", + "@inquirer/select": "^4.4.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "^1.28.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dev": true, "license": "MIT", "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "dev": true, "license": "MIT", "dependencies": { - "pend": "~1.2.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dev": true, "license": "MIT", "engines": { - "node": ">=12.0.0" + "node": ">=18" }, "peerDependencies": { - "picomatch": "^3 || ^4" + "@types/node": ">=18" }, "peerDependenciesMeta": { - "picomatch": { + "@types/node": { "optional": true } } }, - "node_modules/file-type": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", - "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": "20 || >=22" } }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", "dev": true, "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, "engines": { - "node": ">=4" + "node": "20 || >=22" } }, - "node_modules/filenamify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", - "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.0", - "trim-repeated": "^1.0.0" - }, - "engines": { - "node": ">=4" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, - "node_modules/get-east-asian-width": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/get-proxy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", - "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "node_modules/@jsep-plugin/assignment": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz", + "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", "dev": true, "license": "MIT", - "dependencies": { - "npm-conf": "^1.1.0" - }, "engines": { - "node": ">=4" + "node": ">= 10.16.0" + }, + "peerDependencies": { + "jsep": "^0.4.0||^1.0.0" } }, - "node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "node_modules/@jsep-plugin/regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz", + "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 10.16.0" + }, + "peerDependencies": { + "jsep": "^0.4.0||^1.0.0" } }, - "node_modules/got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "node_modules/@jsep-plugin/ternary": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@jsep-plugin/ternary/-/ternary-1.1.4.tgz", + "integrity": "sha512-ck5wiqIbqdMX6WRQztBL7ASDty9YLgJ3sSAK5ZpBzXeySvFGCzIvM6UiAI4hTZ22fEcYQVV/zhUbNscggW+Ukg==", "dev": true, "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, "engines": { - "node": ">=4" + "node": ">= 10.16.0" + }, + "peerDependencies": { + "jsep": "^0.4.0||^1.0.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "node_modules/@mdx-js/react": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", "dev": true, "license": "MIT", - "engines": { - "node": "*" + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" } }, - "node_modules/has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "node_modules/@mintlify/cli": { + "version": "4.0.978", + "resolved": "https://registry.npmjs.org/@mintlify/cli/-/cli-4.0.978.tgz", + "integrity": "sha512-Zer7yXn+IzYbWl6r4PXeLsrkODlQkfr8t0OkkUQ7OqPCxlBI0bWtFKq6OvE/pDtQumghU+ajgaf14d2V01RziA==", "dev": true, - "license": "MIT", + "license": "Elastic-2.0", "dependencies": { - "has-symbol-support-x": "^1.4.1" + "@inquirer/prompts": "7.9.0", + "@mintlify/common": "1.0.749", + "@mintlify/link-rot": "3.0.913", + "@mintlify/models": "0.0.274", + "@mintlify/prebuild": "1.0.886", + "@mintlify/previewing": "4.0.943", + "@mintlify/scraping": "4.0.611", + "@mintlify/validation": "0.1.605", + "adm-zip": "0.5.16", + "chalk": "5.2.0", + "color": "4.2.3", + "detect-port": "1.5.1", + "front-matter": "4.0.2", + "fs-extra": "11.2.0", + "ink": "6.3.0", + "inquirer": "12.3.0", + "js-yaml": "4.1.0", + "mdast-util-mdx-jsx": "3.2.0", + "react": "19.2.3", + "semver": "7.7.2", + "unist-util-visit": "5.0.0", + "yargs": "17.7.1" + }, + "bin": { + "mint": "bin/index.js", + "mintlify": "bin/index.js" }, "engines": { - "node": "*" + "node": ">=18.0.0" } }, - "node_modules/http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "node_modules/@mintlify/cli/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "node_modules/@mintlify/cli/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "node_modules/@mintlify/common": { + "version": "1.0.749", + "resolved": "https://registry.npmjs.org/@mintlify/common/-/common-1.0.749.tgz", + "integrity": "sha512-3ZN6HBwjwIys5m9z7Wi6WAaAHVJXdQNvt1sqC6/FHifX/Cr7m/jBtwaMfSyynfo5UiPDszeFeinE7nvL0B4Vyg==", "dev": true, - "license": "ISC" + "license": "ISC", + "dependencies": { + "@asyncapi/parser": "3.4.0", + "@asyncapi/specs": "6.8.1", + "@mintlify/mdx": "^3.0.4", + "@mintlify/models": "0.0.274", + "@mintlify/openapi-parser": "^0.0.8", + "@mintlify/validation": "0.1.605", + "@sindresorhus/slugify": "2.2.0", + "@types/mdast": "4.0.4", + "acorn": "8.11.2", + "acorn-jsx": "5.3.2", + "color-blend": "4.0.0", + "estree-util-to-js": "2.0.0", + "estree-walker": "3.0.3", + "front-matter": "4.0.2", + "hast-util-from-html": "2.0.3", + "hast-util-to-html": "9.0.4", + "hast-util-to-text": "4.0.2", + "hex-rgb": "5.0.0", + "ignore": "7.0.5", + "js-yaml": "4.1.0", + "lodash": "4.17.21", + "mdast-util-from-markdown": "2.0.2", + "mdast-util-gfm": "3.0.0", + "mdast-util-mdx": "3.0.0", + "mdast-util-mdx-jsx": "3.1.3", + "micromark-extension-gfm": "3.0.0", + "micromark-extension-mdx-jsx": "3.0.1", + "micromark-extension-mdxjs": "3.0.0", + "openapi-types": "12.1.3", + "postcss": "8.5.6", + "rehype-stringify": "10.0.1", + "remark": "15.0.1", + "remark-frontmatter": "5.0.0", + "remark-gfm": "4.0.0", + "remark-math": "6.0.0", + "remark-mdx": "3.1.0", + "remark-parse": "11.0.0", + "remark-rehype": "11.1.1", + "remark-stringify": "11.0.0", + "tailwindcss": "3.4.4", + "unified": "11.0.5", + "unist-builder": "4.0.0", + "unist-util-map": "4.0.0", + "unist-util-remove": "4.0.0", + "unist-util-remove-position": "5.0.0", + "unist-util-visit": "5.0.0", + "unist-util-visit-parents": "6.0.1", + "vfile": "6.0.3" + } }, - "node_modules/into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", + "node_modules/@mintlify/common/node_modules/@floating-ui/react-dom": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.7.tgz", + "integrity": "sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" + "@floating-ui/dom": "^1.7.5" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "node_modules/@mintlify/common/node_modules/@mintlify/mdx": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@mintlify/mdx/-/mdx-3.0.4.tgz", + "integrity": "sha512-tJhdpnM5ReJLNJ2fuDRIEr0zgVd6id7/oAIfs26V46QlygiLsc8qx4Rz3LWIX51rUXW/cfakjj0EATxIciIw+g==", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "@shikijs/transformers": "^3.11.0", + "@shikijs/twoslash": "^3.12.2", + "arktype": "^2.1.26", + "hast-util-to-string": "^3.0.1", + "mdast-util-from-markdown": "^2.0.2", + "mdast-util-gfm": "^3.1.0", + "mdast-util-mdx-jsx": "^3.2.0", + "mdast-util-to-hast": "^13.2.0", + "next-mdx-remote-client": "^1.0.3", + "rehype-katex": "^7.0.1", + "remark-gfm": "^4.0.0", + "remark-math": "^6.0.0", + "remark-smartypants": "^3.0.2", + "shiki": "^3.11.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "@radix-ui/react-popover": "^1.1.15", + "react": "^18.3.1", + "react-dom": "^18.3.1" } }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "node_modules/@mintlify/common/node_modules/@mintlify/mdx/node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", "dev": true, "license": "MIT", "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "node_modules/@mintlify/common/node_modules/@mintlify/mdx/node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", "dev": true, "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "node_modules/@mintlify/common/node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "peer": true, + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "node_modules/@mintlify/common/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peer": true, + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "node_modules/@mintlify/common/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "node_modules/@mintlify/common/node_modules/@radix-ui/react-popover": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "peer": true, + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@mintlify/common/node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peer": true, + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "node_modules/@mintlify/common/node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "node_modules/@mintlify/common/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" }, - "engines": { - "node": ">= 4" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "node_modules/@mintlify/common/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@mintlify/common/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@mintlify/common/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -1128,1445 +1571,14879 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "node_modules/@mintlify/common/node_modules/mdast-util-mdx-jsx": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", + "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "node_modules/@mintlify/common/node_modules/next-mdx-remote-client": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/next-mdx-remote-client/-/next-mdx-remote-client-1.1.6.tgz", + "integrity": "sha512-O4HIpi44d6SismhfG5W78aTUfgxfbsj6FgoM4/G3o4Vtcobt0Ej439IiDPkv+IqsmtouVYG1tGAsz1DIuj9Tfg==", "dev": true, - "license": "MIT" + "license": "MPL 2.0", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@mdx-js/mdx": "^3.1.1", + "@mdx-js/react": "^3.1.1", + "remark-mdx-remove-esm": "^1.2.3", + "serialize-error": "^13.0.1", + "vfile": "^6.0.3", + "vfile-matter": "^5.0.1" + }, + "engines": { + "node": ">=20.9.0" + }, + "peerDependencies": { + "react": ">= 18.3.0 < 19.0.0", + "react-dom": ">= 18.3.0 < 19.0.0" + } }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "node_modules/@mintlify/common/node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dev": true, "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/katex": { - "version": "0.16.27", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.27.tgz", - "integrity": "sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw==", + "node_modules/@mintlify/common/node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dev": true, - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], "license": "MIT", + "peer": true, "dependencies": { - "commander": "^8.3.0" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" }, - "bin": { - "katex": "cli.js" + "peerDependencies": { + "react": "^18.3.1" } }, - "node_modules/katex/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/@mintlify/common/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dev": true, "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/@mintlify/link-rot": { + "version": "3.0.913", + "resolved": "https://registry.npmjs.org/@mintlify/link-rot/-/link-rot-3.0.913.tgz", + "integrity": "sha512-028krnNVCKSERMrCfeauXxftRsl8USx2LAhc+0WU+gTcnR0H8VfWYVcsyXZSOAVhG7VP0Nze0+PCPe/FAlYJhA==", + "dev": true, + "license": "Elastic-2.0", + "dependencies": { + "@mintlify/common": "1.0.749", + "@mintlify/prebuild": "1.0.886", + "@mintlify/previewing": "4.0.943", + "@mintlify/scraping": "4.0.522", + "@mintlify/validation": "0.1.605", + "fs-extra": "11.1.0", + "unist-util-visit": "4.1.2" + }, "engines": { - "node": ">= 12" + "node": ">=18.0.0" } }, - "node_modules/keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "node_modules/@mintlify/link-rot/node_modules/@floating-ui/react-dom": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.7.tgz", + "integrity": "sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "json-buffer": "3.0.0" + "@floating-ui/dom": "^1.7.5" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, - "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/mdx": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@mintlify/mdx/-/mdx-3.0.4.tgz", + "integrity": "sha512-tJhdpnM5ReJLNJ2fuDRIEr0zgVd6id7/oAIfs26V46QlygiLsc8qx4Rz3LWIX51rUXW/cfakjj0EATxIciIw+g==", "dev": true, "license": "MIT", "dependencies": { - "uc.micro": "^2.0.0" + "@shikijs/transformers": "^3.11.0", + "@shikijs/twoslash": "^3.12.2", + "arktype": "^2.1.26", + "hast-util-to-string": "^3.0.1", + "mdast-util-from-markdown": "^2.0.2", + "mdast-util-gfm": "^3.1.0", + "mdast-util-mdx-jsx": "^3.2.0", + "mdast-util-to-hast": "^13.2.0", + "next-mdx-remote-client": "^1.0.3", + "rehype-katex": "^7.0.1", + "remark-gfm": "^4.0.0", + "remark-math": "^6.0.0", + "remark-smartypants": "^3.0.2", + "shiki": "^3.11.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "@radix-ui/react-popover": "^1.1.15", + "react": "^18.3.1", + "react-dom": "^18.3.1" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/mdx/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@mintlify/link-rot/node_modules/@mintlify/mdx/node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/mdx/node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", "dev": true, "license": "MIT", "dependencies": { - "pify": "^3.0.0" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/mdx/node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/markdownlint": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.40.0.tgz", - "integrity": "sha512-UKybllYNheWac61Ia7T6fzuQNDZimFIpCg2w6hHjgV1Qu0w1TV0LlSgryUGzM0bkKQCBhy2FDhEELB73Kb0kAg==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/models": { + "version": "0.0.255", + "resolved": "https://registry.npmjs.org/@mintlify/models/-/models-0.0.255.tgz", + "integrity": "sha512-LIUkfA7l7ypHAAuOW74ZJws/NwNRqlDRD/U466jarXvvSlGhJec/6J4/I+IEcBvWDnc9anLFKmnGO04jPKgAsg==", "dev": true, - "license": "MIT", + "license": "Elastic-2.0", "dependencies": { - "micromark": "4.0.2", - "micromark-core-commonmark": "2.0.3", - "micromark-extension-directive": "4.0.0", - "micromark-extension-gfm-autolink-literal": "2.1.0", - "micromark-extension-gfm-footnote": "2.1.0", - "micromark-extension-gfm-table": "2.1.1", - "micromark-extension-math": "3.1.0", - "micromark-util-types": "2.0.2", - "string-width": "8.1.0" + "axios": "1.10.0", + "openapi-types": "12.1.3" }, "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/DavidAnson" + "node": ">=18.0.0" } }, - "node_modules/markdownlint-cli": { - "version": "0.47.0", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.47.0.tgz", - "integrity": "sha512-HOcxeKFAdDoldvoYDofd85vI8LgNWy8vmYpCwnlLV46PJcodmGzD7COSSBlhHwsfT4o9KrAStGodImVBus31Bg==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/scraping": { + "version": "4.0.522", + "resolved": "https://registry.npmjs.org/@mintlify/scraping/-/scraping-4.0.522.tgz", + "integrity": "sha512-PL2k52WT5S5OAgnT2K13bP7J2El6XwiVvQlrLvxDYw5KMMV+y34YVJI8ZscKb4trjitWDgyK0UTq2KN6NQgn6g==", "dev": true, - "license": "MIT", + "license": "Elastic-2.0", "dependencies": { - "commander": "~14.0.2", - "deep-extend": "~0.6.0", - "ignore": "~7.0.5", - "js-yaml": "~4.1.1", - "jsonc-parser": "~3.3.1", - "jsonpointer": "~5.0.1", - "markdown-it": "~14.1.0", - "markdownlint": "~0.40.0", - "minimatch": "~10.1.1", - "run-con": "~1.3.2", - "smol-toml": "~1.5.2", - "tinyglobby": "~0.2.15" + "@mintlify/common": "1.0.661", + "@mintlify/openapi-parser": "^0.0.8", + "fs-extra": "11.1.1", + "hast-util-to-mdast": "10.1.0", + "js-yaml": "4.1.0", + "mdast-util-mdx-jsx": "3.1.3", + "neotraverse": "0.6.18", + "puppeteer": "22.14.0", + "rehype-parse": "9.0.1", + "remark-gfm": "4.0.0", + "remark-mdx": "3.0.1", + "remark-parse": "11.0.0", + "remark-stringify": "11.0.0", + "unified": "11.0.5", + "unist-util-visit": "5.0.0", + "yargs": "17.7.1", + "zod": "3.21.4" }, "bin": { - "markdownlint": "markdownlint.js" + "mintlify-scrape": "bin/cli.js" }, "engines": { - "node": ">=20" + "node": ">=18.0.0" } }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/scraping/node_modules/@mintlify/common": { + "version": "1.0.661", + "resolved": "https://registry.npmjs.org/@mintlify/common/-/common-1.0.661.tgz", + "integrity": "sha512-/Hdiblzaomp+AWStQ4smhVMgesQhffzQjC9aYBnmLReNdh2Js+ccQFUaWL3TNIxwiS2esaZvsHSV/D+zyRS3hg==", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "@asyncapi/parser": "3.4.0", + "@mintlify/mdx": "^3.0.4", + "@mintlify/models": "0.0.255", + "@mintlify/openapi-parser": "^0.0.8", + "@mintlify/validation": "0.1.555", + "@sindresorhus/slugify": "2.2.0", + "@types/mdast": "4.0.4", + "acorn": "8.11.2", + "acorn-jsx": "5.3.2", + "color-blend": "4.0.0", + "estree-util-to-js": "2.0.0", + "estree-walker": "3.0.3", + "front-matter": "4.0.2", + "hast-util-from-html": "2.0.3", + "hast-util-to-html": "9.0.4", + "hast-util-to-text": "4.0.2", + "hex-rgb": "5.0.0", + "ignore": "7.0.5", + "js-yaml": "4.1.0", + "lodash": "4.17.21", + "mdast-util-from-markdown": "2.0.2", + "mdast-util-gfm": "3.0.0", + "mdast-util-mdx": "3.0.0", + "mdast-util-mdx-jsx": "3.1.3", + "micromark-extension-gfm": "3.0.0", + "micromark-extension-mdx-jsx": "3.0.1", + "micromark-extension-mdxjs": "3.0.0", + "openapi-types": "12.1.3", + "postcss": "8.5.6", + "rehype-stringify": "10.0.1", + "remark": "15.0.1", + "remark-frontmatter": "5.0.0", + "remark-gfm": "4.0.0", + "remark-math": "6.0.0", + "remark-mdx": "3.1.0", + "remark-parse": "11.0.0", + "remark-rehype": "11.1.1", + "remark-stringify": "11.0.0", + "tailwindcss": "3.4.4", + "unified": "11.0.5", + "unist-builder": "4.0.0", + "unist-util-map": "4.0.0", + "unist-util-remove": "4.0.0", + "unist-util-remove-position": "5.0.0", + "unist-util-visit": "5.0.0", + "unist-util-visit-parents": "6.0.1", + "vfile": "6.0.3" + } }, - "node_modules/micromark": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/scraping/node_modules/@mintlify/common/node_modules/remark-mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-core-commonmark": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/scraping/node_modules/@mintlify/validation": { + "version": "0.1.555", + "resolved": "https://registry.npmjs.org/@mintlify/validation/-/validation-0.1.555.tgz", + "integrity": "sha512-11QVUReL4N5u8wSCgZt4RN7PA0jYQoMEBZ5IrUp5pgb5ZJBOoGV/vPsQrxPPa1cxsUDAuToNhtGxRQtOav/w8w==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", + "license": "Elastic-2.0", "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@mintlify/mdx": "^3.0.4", + "@mintlify/models": "0.0.255", + "arktype": "2.1.27", + "js-yaml": "4.1.0", + "lcm": "0.0.3", + "lodash": "4.17.21", + "object-hash": "3.0.0", + "openapi-types": "12.1.3", + "uuid": "11.1.0", + "zod": "3.21.4", + "zod-to-json-schema": "3.20.4" } }, - "node_modules/micromark-extension-directive": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz", - "integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/scraping/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@mintlify/link-rot/node_modules/@mintlify/scraping/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "license": "MIT", "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "parse-entities": "^4.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=14.14" } }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", - "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/scraping/node_modules/remark-mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", + "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", "dev": true, "license": "MIT", "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "node_modules/@mintlify/link-rot/node_modules/@mintlify/scraping/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dev": true, "license": "MIT", "dependencies": { - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-table": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", - "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "node_modules/@mintlify/link-rot/node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@radix-ui/react-primitive": "2.1.3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/micromark-extension-math": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", - "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "node_modules/@mintlify/link-rot/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@types/katex": "^0.16.0", - "devlop": "^1.0.0", - "katex": "^0.16.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/micromark-factory-destination": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", - "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "node_modules/@mintlify/link-rot/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", + "peer": true, "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/micromark-factory-label": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "node_modules/@mintlify/link-rot/node_modules/@radix-ui/react-popover": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "@types/react-dom": { + "optional": true } - ], + } + }, + "node_modules/@mintlify/link-rot/node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "node_modules/@mintlify/link-rot/node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "@types/react-dom": { + "optional": true } - ], + } + }, + "node_modules/@mintlify/link-rot/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/micromark-factory-title": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "node_modules/@mintlify/link-rot/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "@types/react-dom": { + "optional": true } - ], + } + }, + "node_modules/@mintlify/link-rot/node_modules/axios": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", + "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", + "dev": true, "license": "MIT", "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/micromark-factory-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "node_modules/@mintlify/link-rot/node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" } }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "node_modules/@mintlify/link-rot/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/micromark-util-chunked": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "node_modules/@mintlify/link-rot/node_modules/mdast-util-mdx-jsx": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", + "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", "dependencies": { - "micromark-util-symbol": "^2.0.0" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "node_modules/@mintlify/link-rot/node_modules/mdast-util-mdx-jsx/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", + "license": "MIT" + }, + "node_modules/@mintlify/link-rot/node_modules/next-mdx-remote-client": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/next-mdx-remote-client/-/next-mdx-remote-client-1.1.6.tgz", + "integrity": "sha512-O4HIpi44d6SismhfG5W78aTUfgxfbsj6FgoM4/G3o4Vtcobt0Ej439IiDPkv+IqsmtouVYG1tGAsz1DIuj9Tfg==", + "dev": true, + "license": "MPL 2.0", "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@babel/code-frame": "^7.29.0", + "@mdx-js/mdx": "^3.1.1", + "@mdx-js/react": "^3.1.1", + "remark-mdx-remove-esm": "^1.2.3", + "serialize-error": "^13.0.1", + "vfile": "^6.0.3", + "vfile-matter": "^5.0.1" + }, + "engines": { + "node": ">=20.9.0" + }, + "peerDependencies": { + "react": ">= 18.3.0 < 19.0.0", + "react-dom": ">= 18.3.0 < 19.0.0" } }, - "node_modules/micromark-util-combine-extensions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", - "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "node_modules/@mintlify/link-rot/node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", + "peer": true, "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", - "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "node_modules/@mintlify/link-rot/node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", + "peer": true, "dependencies": { - "micromark-util-symbol": "^2.0.0" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" } }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "node_modules/@mintlify/link-rot/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", - "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "node_modules/@mintlify/link-rot/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", - "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "node_modules/@mintlify/link-rot/node_modules/unist-util-visit/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", "dependencies": { - "micromark-util-symbol": "^2.0.0" + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", - "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "node_modules/@mintlify/link-rot/node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", "dependencies": { - "micromark-util-types": "^2.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "node_modules/@mintlify/link-rot/node_modules/zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@mintlify/models": { + "version": "0.0.274", + "resolved": "https://registry.npmjs.org/@mintlify/models/-/models-0.0.274.tgz", + "integrity": "sha512-/W7qlRoF8SQRkzvGNoAKPc/WZ4jNy2G3Ir3VnEbyuHG3+lKNPmIdlo/+MaqacFYw2HLiegvqk0hiluNBKSM2fQ==", + "dev": true, + "license": "Elastic-2.0", "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" + "axios": "1.13.2", + "openapi-types": "12.1.3" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/micromark-util-subtokenize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", - "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "node_modules/@mintlify/openapi-parser": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@mintlify/openapi-parser/-/openapi-parser-0.0.8.tgz", + "integrity": "sha512-9MBRq9lS4l4HITYCrqCL7T61MOb20q9IdU7HWhqYMNMM1jGO1nHjXasFy61yZ8V6gMZyyKQARGVoZ0ZrYN48Og==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", + "ajv-formats": "^3.0.1", + "jsonpointer": "^5.0.1", + "leven": "^4.0.0", + "yaml": "^2.4.5" + }, + "engines": { + "node": ">=18" } }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "node_modules/@mintlify/openapi-parser/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true } - ], - "license": "MIT" + } }, - "node_modules/micromark-util-types": { + "node_modules/@mintlify/prebuild": { + "version": "1.0.886", + "resolved": "https://registry.npmjs.org/@mintlify/prebuild/-/prebuild-1.0.886.tgz", + "integrity": "sha512-Tj6tfibYDFPql/TNg2+y6HQi4V2PynFt7b6wqaQLI7F1/yrpqUu9TfO7l5c95YiNNNgzqYCLuNtmMqFxxL9Esg==", + "dev": true, + "license": "Elastic-2.0", + "dependencies": { + "@mintlify/common": "1.0.749", + "@mintlify/openapi-parser": "^0.0.8", + "@mintlify/scraping": "4.0.611", + "@mintlify/validation": "0.1.605", + "chalk": "5.3.0", + "favicons": "7.2.0", + "front-matter": "4.0.2", + "fs-extra": "11.1.0", + "js-yaml": "4.1.0", + "openapi-types": "12.1.3", + "sharp": "0.33.5", + "sharp-ico": "0.1.5", + "unist-util-visit": "4.1.2", + "uuid": "11.1.0" + } + }, + "node_modules/@mintlify/prebuild/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@mintlify/prebuild/node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@mintlify/prebuild/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@mintlify/prebuild/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mintlify/prebuild/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mintlify/prebuild/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mintlify/previewing": { + "version": "4.0.943", + "resolved": "https://registry.npmjs.org/@mintlify/previewing/-/previewing-4.0.943.tgz", + "integrity": "sha512-OvuAD9FlDd8SDZPjAeBUZC8eVUweeSZBbaDuVbYDEjuwRPOhVkRyQWSdds/GNT80GTyQxcCjRN4QnaMaahBWng==", + "dev": true, + "license": "Elastic-2.0", + "dependencies": { + "@mintlify/common": "1.0.749", + "@mintlify/prebuild": "1.0.886", + "@mintlify/validation": "0.1.605", + "better-opn": "3.0.2", + "chalk": "5.2.0", + "chokidar": "3.5.3", + "express": "4.18.2", + "front-matter": "4.0.2", + "fs-extra": "11.1.0", + "got": "13.0.0", + "ink": "6.3.0", + "ink-spinner": "5.0.0", + "is-online": "10.0.0", + "js-yaml": "4.1.0", + "openapi-types": "12.1.3", + "react": "19.2.3", + "socket.io": "4.7.2", + "tar": "6.1.15", + "unist-util-visit": "4.1.2", + "yargs": "17.7.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@mintlify/previewing/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@mintlify/previewing/node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@mintlify/previewing/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@mintlify/previewing/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mintlify/previewing/node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mintlify/previewing/node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@mintlify/previewing/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mintlify/previewing/node_modules/got": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", + "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/@mintlify/previewing/node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/@mintlify/previewing/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@mintlify/previewing/node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@mintlify/previewing/node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/@mintlify/previewing/node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mintlify/previewing/node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mintlify/previewing/node_modules/normalize-url": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mintlify/previewing/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/@mintlify/previewing/node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mintlify/previewing/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mintlify/previewing/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mintlify/previewing/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mintlify/scraping": { + "version": "4.0.611", + "resolved": "https://registry.npmjs.org/@mintlify/scraping/-/scraping-4.0.611.tgz", + "integrity": "sha512-JsUJ2ZZnRk+D6t2NrqMZ4tkhkUob4KHczMpkwp+b5lt7exz3rl8Gzt5q1XhY4ioN1KFaVQgx1ykBAFf2EtD7rw==", + "dev": true, + "license": "Elastic-2.0", + "dependencies": { + "@mintlify/common": "1.0.749", + "@mintlify/openapi-parser": "^0.0.8", + "fs-extra": "11.1.1", + "hast-util-to-mdast": "10.1.0", + "js-yaml": "4.1.0", + "mdast-util-mdx-jsx": "3.1.3", + "neotraverse": "0.6.18", + "puppeteer": "22.14.0", + "rehype-parse": "9.0.1", + "remark-gfm": "4.0.0", + "remark-mdx": "3.0.1", + "remark-parse": "11.0.0", + "remark-stringify": "11.0.0", + "unified": "11.0.5", + "unist-util-visit": "5.0.0", + "yargs": "17.7.1", + "zod": "3.24.0" + }, + "bin": { + "mintlify-scrape": "bin/cli.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@mintlify/scraping/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@mintlify/scraping/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@mintlify/scraping/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@mintlify/scraping/node_modules/mdast-util-mdx-jsx": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", + "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mintlify/scraping/node_modules/remark-mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", + "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mintlify/validation": { + "version": "0.1.605", + "resolved": "https://registry.npmjs.org/@mintlify/validation/-/validation-0.1.605.tgz", + "integrity": "sha512-4mMdB5Kah+NcpOsH5x1waJ+gWtiRSSJaLmBzfs5j6E2XVCn8MEbFbg+aZTR2lkesNtaEvz/nq7TQZy6GKS3X6g==", + "dev": true, + "license": "Elastic-2.0", + "dependencies": { + "@mintlify/mdx": "^3.0.4", + "@mintlify/models": "0.0.274", + "arktype": "2.1.27", + "js-yaml": "4.1.0", + "lcm": "0.0.3", + "lodash": "4.17.21", + "object-hash": "3.0.0", + "openapi-types": "12.1.3", + "uuid": "11.1.0", + "zod": "3.24.0", + "zod-to-json-schema": "3.20.4" + } + }, + "node_modules/@mintlify/validation/node_modules/@floating-ui/react-dom": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.7.tgz", + "integrity": "sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@floating-ui/dom": "^1.7.5" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@mintlify/validation/node_modules/@mintlify/mdx": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@mintlify/mdx/-/mdx-3.0.4.tgz", + "integrity": "sha512-tJhdpnM5ReJLNJ2fuDRIEr0zgVd6id7/oAIfs26V46QlygiLsc8qx4Rz3LWIX51rUXW/cfakjj0EATxIciIw+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/transformers": "^3.11.0", + "@shikijs/twoslash": "^3.12.2", + "arktype": "^2.1.26", + "hast-util-to-string": "^3.0.1", + "mdast-util-from-markdown": "^2.0.2", + "mdast-util-gfm": "^3.1.0", + "mdast-util-mdx-jsx": "^3.2.0", + "mdast-util-to-hast": "^13.2.0", + "next-mdx-remote-client": "^1.0.3", + "rehype-katex": "^7.0.1", + "remark-gfm": "^4.0.0", + "remark-math": "^6.0.0", + "remark-smartypants": "^3.0.2", + "shiki": "^3.11.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "@radix-ui/react-popover": "^1.1.15", + "react": "^18.3.1", + "react-dom": "^18.3.1" + } + }, + "node_modules/@mintlify/validation/node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@mintlify/validation/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@mintlify/validation/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@mintlify/validation/node_modules/@radix-ui/react-popover": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@mintlify/validation/node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@mintlify/validation/node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@mintlify/validation/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@mintlify/validation/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@mintlify/validation/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@mintlify/validation/node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mintlify/validation/node_modules/next-mdx-remote-client": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/next-mdx-remote-client/-/next-mdx-remote-client-1.1.6.tgz", + "integrity": "sha512-O4HIpi44d6SismhfG5W78aTUfgxfbsj6FgoM4/G3o4Vtcobt0Ej439IiDPkv+IqsmtouVYG1tGAsz1DIuj9Tfg==", + "dev": true, + "license": "MPL 2.0", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@mdx-js/mdx": "^3.1.1", + "@mdx-js/react": "^3.1.1", + "remark-mdx-remove-esm": "^1.2.3", + "serialize-error": "^13.0.1", + "vfile": "^6.0.3", + "vfile-matter": "^5.0.1" + }, + "engines": { + "node": ">=20.9.0" + }, + "peerDependencies": { + "react": ">= 18.3.0 < 19.0.0", + "react-dom": ">= 18.3.0 < 19.0.0" + } + }, + "node_modules/@mintlify/validation/node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@mintlify/validation/node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/@mintlify/validation/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@ocular-d/vale-bin": { + "version": "2.29.6", + "resolved": "https://registry.npmjs.org/@ocular-d/vale-bin/-/vale-bin-2.29.6.tgz", + "integrity": "sha512-Sxp4+H1FV7hg254zYXYLdcFjtW/Bawb8gtp+3Cn3Bi57gDv2Cu7+r20iBtoOOTswA+Zr4fjEbl5T7O/qUjQbow==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "download": "^7.1.0" + }, + "bin": { + "vale": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapi-contrib/openapi-schema-to-json-schema": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-3.2.0.tgz", + "integrity": "sha512-Gj6C0JwCr8arj0sYuslWXUBSP/KnUlEGnPW4qxlXvAl543oaNQgMgIgkQUA6vs5BCCvwTEiL8m/wdWzfl4UvSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", + "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.3.5", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.4.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@puppeteer/browsers/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@puppeteer/browsers/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@puppeteer/browsers/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@puppeteer/browsers/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@puppeteer/browsers/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@shikijs/core": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.22.0.tgz", + "integrity": "sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.22.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/@shikijs/core/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@shikijs/core/node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.22.0.tgz", + "integrity": "sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.22.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.4" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.22.0.tgz", + "integrity": "sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.22.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.22.0.tgz", + "integrity": "sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.22.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.22.0.tgz", + "integrity": "sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.22.0" + } + }, + "node_modules/@shikijs/transformers": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-3.22.0.tgz", + "integrity": "sha512-E7eRV7mwDBjueLF6852n2oYeJYxBq3NSsDk+uyruYAXONv4U8holGmIrT+mPRJQ1J1SNOH6L8G19KRzmBawrFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.22.0", + "@shikijs/types": "3.22.0" + } + }, + "node_modules/@shikijs/twoslash": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-3.22.0.tgz", + "integrity": "sha512-GO27UPN+kegOMQvC+4XcLt0Mttyg+n16XKjmoKjdaNZoW+sOJV7FLdv2QKauqUDws6nE3EQPD+TFHEdyyoUBDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.22.0", + "@shikijs/types": "3.22.0", + "twoslash": "^0.3.6" + }, + "peerDependencies": { + "typescript": ">=5.5.0" + } + }, + "node_modules/@shikijs/types": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.22.0.tgz", + "integrity": "sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@sindresorhus/slugify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.0.tgz", + "integrity": "sha512-9Vybc/qX8Kj6pxJaapjkFbiUJPk7MAkCh/GFCxIBnnsuYCFPIXKvnLidG8xlepht3i24L5XemUmGtrJ3UWrl6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/transliterate": "^1.0.0", + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/slugify/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz", + "integrity": "sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stoplight/better-ajv-errors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz", + "integrity": "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": "^12.20 || >= 14.13" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/@stoplight/better-ajv-errors/node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@stoplight/json": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.0.tgz", + "integrity": "sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/ordered-object-literal": "^1.0.3", + "@stoplight/path": "^1.3.2", + "@stoplight/types": "^13.6.0", + "jsonc-parser": "~2.2.1", + "lodash": "^4.17.21", + "safe-stable-stringify": "^1.1" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/@stoplight/json-ref-readers": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz", + "integrity": "sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-fetch": "^2.6.0", + "tslib": "^1.14.1" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/@stoplight/json-ref-resolver": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.6.tgz", + "integrity": "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/json": "^3.21.0", + "@stoplight/path": "^1.3.2", + "@stoplight/types": "^12.3.0 || ^13.0.0", + "@types/urijs": "^1.19.19", + "dependency-graph": "~0.11.0", + "fast-memoize": "^2.5.2", + "immer": "^9.0.6", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "urijs": "^1.19.11" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/@stoplight/json-ref-resolver/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@stoplight/json/node_modules/jsonc-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz", + "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stoplight/ordered-object-literal": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz", + "integrity": "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/@stoplight/path": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz", + "integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/@stoplight/spectral-core": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-core/-/spectral-core-1.21.0.tgz", + "integrity": "sha512-oj4e/FrDLUhBRocIW+lRMKlJ/q/rDZw61HkLbTFsdMd+f/FTkli2xHNB1YC6n1mrMKjjvy7XlUuFkC7XxtgbWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/better-ajv-errors": "1.0.3", + "@stoplight/json": "~3.21.0", + "@stoplight/path": "1.3.2", + "@stoplight/spectral-parsers": "^1.0.0", + "@stoplight/spectral-ref-resolver": "^1.0.4", + "@stoplight/spectral-runtime": "^1.1.2", + "@stoplight/types": "~13.6.0", + "@types/es-aggregate-error": "^1.0.2", + "@types/json-schema": "^7.0.11", + "ajv": "^8.17.1", + "ajv-errors": "~3.0.0", + "ajv-formats": "~2.1.1", + "es-aggregate-error": "^1.0.7", + "jsonpath-plus": "^10.3.0", + "lodash": "~4.17.23", + "lodash.topath": "^4.5.2", + "minimatch": "3.1.2", + "nimma": "0.2.3", + "pony-cause": "^1.1.1", + "simple-eval": "1.0.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-core/node_modules/@stoplight/types": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.6.0.tgz", + "integrity": "sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.4", + "utility-types": "^3.10.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + } + }, + "node_modules/@stoplight/spectral-core/node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stoplight/spectral-core/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@stoplight/spectral-core/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@stoplight/spectral-formats": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.8.2.tgz", + "integrity": "sha512-c06HB+rOKfe7tuxg0IdKDEA5XnjL2vrn/m/OVIIxtINtBzphZrOgtRn7epQ5bQF5SWp84Ue7UJWaGgDwVngMFw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/json": "^3.17.0", + "@stoplight/spectral-core": "^1.19.2", + "@types/json-schema": "^7.0.7", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-formats/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@stoplight/spectral-functions": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.10.1.tgz", + "integrity": "sha512-obu8ZfoHxELOapfGsCJixKZXZcffjg+lSoNuttpmUFuDzVLT3VmH8QkPXfOGOL5Pz80BR35ClNAToDkdnYIURg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/better-ajv-errors": "1.0.3", + "@stoplight/json": "^3.17.1", + "@stoplight/spectral-core": "^1.19.4", + "@stoplight/spectral-formats": "^1.8.1", + "@stoplight/spectral-runtime": "^1.1.2", + "ajv": "^8.17.1", + "ajv-draft-04": "~1.0.0", + "ajv-errors": "~3.0.0", + "ajv-formats": "~2.1.1", + "lodash": "~4.17.21", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-functions/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@stoplight/spectral-parsers": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-parsers/-/spectral-parsers-1.0.5.tgz", + "integrity": "sha512-ANDTp2IHWGvsQDAY85/jQi9ZrF4mRrA5bciNHX+PUxPr4DwS6iv4h+FVWJMVwcEYdpyoIdyL+SRmHdJfQEPmwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/json": "~3.21.0", + "@stoplight/types": "^14.1.1", + "@stoplight/yaml": "~4.3.0", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-parsers/node_modules/@stoplight/types": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz", + "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.4", + "utility-types": "^3.10.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + } + }, + "node_modules/@stoplight/spectral-parsers/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@stoplight/spectral-ref-resolver": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-ref-resolver/-/spectral-ref-resolver-1.0.5.tgz", + "integrity": "sha512-gj3TieX5a9zMW29z3mBlAtDOCgN3GEc1VgZnCVlr5irmR4Qi5LuECuFItAq4pTn5Zu+sW5bqutsCH7D4PkpyAA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/json-ref-readers": "1.2.2", + "@stoplight/json-ref-resolver": "~3.1.6", + "@stoplight/spectral-runtime": "^1.1.2", + "dependency-graph": "0.11.0", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-ref-resolver/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@stoplight/spectral-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-runtime/-/spectral-runtime-1.1.4.tgz", + "integrity": "sha512-YHbhX3dqW0do6DhiPSgSGQzr6yQLlWybhKwWx0cqxjMwxej3TqLv3BXMfIUYFKKUqIwH4Q2mV8rrMM8qD2N0rQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/json": "^3.20.1", + "@stoplight/path": "^1.3.2", + "@stoplight/types": "^13.6.0", + "abort-controller": "^3.0.0", + "lodash": "^4.17.21", + "node-fetch": "^2.7.0", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-runtime/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@stoplight/types": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz", + "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.4", + "utility-types": "^3.10.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + } + }, + "node_modules/@stoplight/yaml": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.3.0.tgz", + "integrity": "sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/ordered-object-literal": "^1.0.5", + "@stoplight/types": "^14.1.1", + "@stoplight/yaml-ast-parser": "0.0.50", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=10.8" + } + }, + "node_modules/@stoplight/yaml-ast-parser": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.50.tgz", + "integrity": "sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@stoplight/yaml/node_modules/@stoplight/types": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz", + "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.4", + "utility-types": "^3.10.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + } + }, + "node_modules/@stoplight/yaml/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/es-aggregate-error": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/es-aggregate-error/-/es-aggregate-error-1.0.6.tgz", + "integrity": "sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/katex": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz", + "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", + "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/urijs": { + "version": "1.19.26", + "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.26.tgz", + "integrity": "sha512-wkXrVzX5yoqLnndOwFsieJA7oKM8cNkOKJtf/3vVGSUFkWDKZvFHpIl9Pvqb/T9UsawBBFMTTD8xu7sK5MWuvg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript/vfs": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@typescript/vfs/-/vfs-1.6.4.tgz", + "integrity": "sha512-PJFXFS4ZJKiJ9Qiuix6Dz/OwEIqHD7Dme1UwZhTK11vR+5dqW2ACbdndWQexBzCx+CPuMe5WBYQWCsFyGlQLlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.3" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", + "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.0.1" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-escapes": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "file-type": "^4.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/archive-type/node_modules/file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-hidden/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "peer": true + }, + "node_modules/arkregex": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/arkregex/-/arkregex-0.0.3.tgz", + "integrity": "sha512-bU21QJOJEFJK+BPNgv+5bVXkvRxyAvgnon75D92newgHxkBJTgiFwQxusyViYyJkETsddPlHyspshDQcCzmkNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ark/util": "0.55.0" + } + }, + "node_modules/arktype": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/arktype/-/arktype-2.1.27.tgz", + "integrity": "sha512-enctOHxI4SULBv/TDtCVi5M8oLd4J5SVlPUblXDzSsOYQNMzmVbUosGBnJuZDKmFlN5Ie0/QVEuTE+Z5X1UhsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ark/schema": "0.55.0", + "@ark/util": "0.55.0", + "arkregex": "0.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "dev": true, + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/auto-bind": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-5.0.1.tgz", + "integrity": "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/avsc": { + "version": "5.7.9", + "resolved": "https://registry.npmjs.org/avsc/-/avsc-5.7.9.tgz", + "integrity": "sha512-yOA4wFeI7ET3v32Di/sUybQ+ttP20JHSW3mxLuNGeO0uD6PPcvLrIQXSvy/rhJOWU5JrYh7U4OHplWMmtAtjMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.11" + } + }, + "node_modules/axios": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/b4a": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.4.tgz", + "integrity": "sha512-POK4oplfA7P7gqvetNmCs4CNtm9fNsx+IAh7jH7GgU0OJdge2rso0R20TNWVq6VoWcCvsTdlNDaleLHGaKx8CA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", + "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.8.0.tgz", + "integrity": "sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "streamx": "^2.21.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-path": "^3.0.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/basic-ftp": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz", + "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/chromium-bidi": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.2.tgz", + "integrity": "sha512-4WVBa6ijmUTVr9cZD4eicQD8Mdy/HCX3bzEIYYpmk0glqYLoWH+LqQEvV9RpDRzoQSbY1KJHloYXbDMXMbDPhg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/chromium-bidi/node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/code-excerpt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", + "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "convert-to-spaces": "^2.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-blend": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/color-blend/-/color-blend-4.0.0.tgz", + "integrity": "sha512-fYODTHhI/NG+B5GnzvuL3kiFrK/UnkUezWFTgEPBTY5V+kpyfAn95Vn9sJeeCX6omrCOdxnqCL3CvH+6sXtIbw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", + "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-to-spaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", + "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-bmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/decode-bmp/-/decode-bmp-0.2.1.tgz", + "integrity": "sha512-NiOaGe+GN0KJqi2STf24hfMkFitDUaIoUU3eKvP/wAbLe8o6FuW5n/x7MHPR0HKvBokp6MQY/j7w8lewEeVCIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@canvas/image-data": "^1.0.0", + "to-data-view": "^1.1.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/decode-ico": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/decode-ico/-/decode-ico-0.4.1.tgz", + "integrity": "sha512-69NZfbKIzux1vBOd31al3XnMnH+2mqDhEgLdpygErm4d60N+UwA5Sq5WFjmEDQzumgB9fElojGwWG0vybVfFmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@canvas/image-data": "^1.0.0", + "decode-bmp": "^0.2.0", + "to-data-view": "^1.1.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1312386", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", + "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dns-socket": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/dns-socket/-/dns-socket-4.2.2.tgz", + "integrity": "sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.4" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/download": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", + "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "archive-type": "^4.0.0", + "caw": "^2.0.1", + "content-disposition": "^0.5.2", + "decompress": "^4.2.0", + "ext-name": "^5.0.0", + "file-type": "^8.1.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^8.3.1", + "make-dir": "^1.2.0", + "p-event": "^2.1.0", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-aggregate-error": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.14.tgz", + "integrity": "sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "globalthis": "^1.0.4", + "has-property-descriptors": "^1.0.2", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-toolkit": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.44.0.tgz", + "integrity": "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==", + "dev": true, + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/favicons": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/favicons/-/favicons-7.2.0.tgz", + "integrity": "sha512-k/2rVBRIRzOeom3wI9jBPaSEvoTSQEW4iM0EveBmBBKFxO8mSyyRWtDlfC3VnEfu0avmjrMzy8/ZFPSe6F71Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-html": "^1.0.3", + "sharp": "^0.33.1", + "xml2js": "^0.6.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-type": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", + "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", + "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1" + } + }, + "node_modules/front-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/front-matter/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gcd": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/gcd/-/gcd-0.0.1.tgz", + "integrity": "sha512-VNx3UEGr+ILJTiMs1+xc5SX1cMgJCrXezKPa003APUWNqQqaF6n25W8VcR7nHN6yRWbvvUTwCpZCFJeWC2kXlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "npm-conf": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-uri": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbol-support-x": "^1.4.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-embedded": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", + "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-dom": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", + "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "@types/hast": "^3.0.0", + "hastscript": "^9.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-body-ok-link": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", + "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-minify-whitespace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", + "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-is-body-ok-link": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", + "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/hast-util-to-html/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/hast-util-to-mdast": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-mdast/-/hast-util-to-mdast-10.1.0.tgz", + "integrity": "sha512-DsL/SvCK9V7+vfc6SLQ+vKIyBDXTk2KLSbfBYkH4zeF/uR1yBajHRhkzuaUSGOB1WJSTieJBdHwxlC+HLKvZZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-phrasing": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "hast-util-to-text": "^4.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-minify-whitespace": "^6.0.0", + "trim-trailing-lines": "^2.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hex-rgb": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-5.0.0.tgz", + "integrity": "sha512-NQO+lgVUCtHxZ792FodgW0zflK+ozS9X9dwGp9XvvmPlH7pyxd588cn24TD3rmPm/N0AIRXF10Otah8yKqGw4w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ico-endec": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ico-endec/-/ico-endec-0.1.6.tgz", + "integrity": "sha512-ZdLU38ZoED3g1j3iEyzcQj+wAkY2xfWNkymszfJPoxucIUhK7NayQ+/C4Kv0nDFMIsbtbEHldv3V8PU494/ueQ==", + "dev": true, + "license": "MPL-2.0" + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/ink": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ink/-/ink-6.3.0.tgz", + "integrity": "sha512-2CbJAa7XeziZYe6pDS5RVLirRY28iSGMQuEV8jRU5NQsONQNfcR/BZHHc9vkMg2lGYTHTM2pskxC1YmY28p6bQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/ansi-tokenize": "^0.2.0", + "ansi-escapes": "^7.0.0", + "ansi-styles": "^6.2.1", + "auto-bind": "^5.0.1", + "chalk": "^5.6.0", + "cli-boxes": "^3.0.0", + "cli-cursor": "^4.0.0", + "cli-truncate": "^4.0.0", + "code-excerpt": "^4.0.0", + "es-toolkit": "^1.39.10", + "indent-string": "^5.0.0", + "is-in-ci": "^2.0.0", + "patch-console": "^2.0.0", + "react-reconciler": "^0.32.0", + "signal-exit": "^3.0.7", + "slice-ansi": "^7.1.0", + "stack-utils": "^2.0.6", + "string-width": "^7.2.0", + "type-fest": "^4.27.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0", + "ws": "^8.18.0", + "yoga-layout": "~3.2.1" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "@types/react": ">=19.0.0", + "react": ">=19.0.0", + "react-devtools-core": "^4.19.1" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react-devtools-core": { + "optional": true + } + } + }, + "node_modules/ink-spinner": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ink-spinner/-/ink-spinner-5.0.0.tgz", + "integrity": "sha512-EYEasbEjkqLGyPOUc8hBJZNuC5GvXGMLu0w5gdTNskPc7Izc5vO3tdQEYnzvshucyGCBXc86ig0ujXPMWaQCdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-spinners": "^2.7.0" + }, + "engines": { + "node": ">=14.16" + }, + "peerDependencies": { + "ink": ">=4.0.0", + "react": ">=18.0.0" + } + }, + "node_modules/ink/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ink/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ink/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ink/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ink/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ink/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "dev": true, + "license": "MIT" + }, + "node_modules/inquirer": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.3.0.tgz", + "integrity": "sha512-3NixUXq+hM8ezj2wc7wC37b32/rHq1MwNZDYdvx+d6jokOD+r+i8Q4Pkylh9tISYP114A128LCX8RKhopC5RfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.2", + "@inquirer/prompts": "^7.2.1", + "@inquirer/type": "^3.0.2", + "ansi-escapes": "^4.3.2", + "mute-stream": "^2.0.0", + "run-async": "^3.0.0", + "rxjs": "^7.8.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + } + }, + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-in-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-2.0.0.tgz", + "integrity": "sha512-cFeerHriAnhrQSbpAxL37W1wcJKUUX07HyLWZCW1URJT/ra3GyUTzBgUnh24TMVfNTV2Hij2HLxkPHFZfOZy5w==", + "dev": true, + "license": "MIT", + "bin": { + "is-in-ci": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-regex": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-online": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/is-online/-/is-online-10.0.0.tgz", + "integrity": "sha512-WCPdKwNDjXJJmUubf2VHLMDBkUZEtuOvpXUfUnUFbEnM6In9ByiScL4f4jKACz/fsb2qDkesFerW3snf/AYz3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "got": "^12.1.0", + "p-any": "^4.0.0", + "p-timeout": "^5.1.0", + "public-ip": "^5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-online/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/is-online/node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/is-online/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-online/node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-online/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-online/node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/is-online/node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/is-online/node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-online/node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/is-online/node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-online/node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-online/node_modules/normalize-url": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-online/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/is-online/node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-online/node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsep": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", + "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.16.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpath-plus": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.4.0.tgz", + "integrity": "sha512-T92WWatJXmhBbKsgH/0hl+jxjdXrifi5IKeMY02DWggRxX0UElcbVzPlmgLTbvsPeW1PasQ6xE2Q75stkhGbsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jsep-plugin/assignment": "^1.3.0", + "@jsep-plugin/regex": "^1.0.4", + "jsep": "^1.4.0" + }, + "bin": { + "jsonpath": "bin/jsonpath-cli.js", + "jsonpath-plus": "bin/jsonpath-cli.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/katex": { + "version": "0.16.27", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.27.tgz", + "integrity": "sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw==", + "dev": true, + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/lcm": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/lcm/-/lcm-0.0.3.tgz", + "integrity": "sha512-TB+ZjoillV6B26Vspf9l2L/vKaRY/4ep3hahcyVkCGFgsTNRUQdc24bQeNFiZeoxH0vr5+7SfNRMQuPHv/1IrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "gcd": "^0.0.1" + } + }, + "node_modules/leven": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-4.1.0.tgz", + "integrity": "sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.topath": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", + "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==", + "dev": true, + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/markdownlint": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.40.0.tgz", + "integrity": "sha512-UKybllYNheWac61Ia7T6fzuQNDZimFIpCg2w6hHjgV1Qu0w1TV0LlSgryUGzM0bkKQCBhy2FDhEELB73Kb0kAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark": "4.0.2", + "micromark-core-commonmark": "2.0.3", + "micromark-extension-directive": "4.0.0", + "micromark-extension-gfm-autolink-literal": "2.1.0", + "micromark-extension-gfm-footnote": "2.1.0", + "micromark-extension-gfm-table": "2.1.1", + "micromark-extension-math": "3.1.0", + "micromark-util-types": "2.0.2", + "string-width": "8.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli": { + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.47.0.tgz", + "integrity": "sha512-HOcxeKFAdDoldvoYDofd85vI8LgNWy8vmYpCwnlLV46PJcodmGzD7COSSBlhHwsfT4o9KrAStGodImVBus31Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "~14.0.2", + "deep-extend": "~0.6.0", + "ignore": "~7.0.5", + "js-yaml": "~4.1.1", + "jsonc-parser": "~3.3.1", + "jsonpointer": "~5.0.1", + "markdown-it": "~14.1.0", + "markdownlint": "~0.40.0", + "minimatch": "~10.1.1", + "run-con": "~1.3.2", + "smol-toml": "~1.5.2", + "tinyglobby": "~0.2.15" + }, + "bin": { + "markdownlint": "markdownlint.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", + "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "longest-streak": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.1.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz", + "integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz", + "integrity": "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-events-to-acorn/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mint": { + "version": "4.2.375", + "resolved": "https://registry.npmjs.org/mint/-/mint-4.2.375.tgz", + "integrity": "sha512-3lA886CN55MmNMj8juJ2tZt/7Lbzc2BrA9KzDFtlu/+Agkcq3gfTWtOPEUWViVYNyDux+CigLgKFr0SZTnkrlQ==", + "dev": true, + "license": "Elastic-2.0", + "dependencies": { + "@mintlify/cli": "4.0.978" + }, + "bin": { + "mint": "index.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neotraverse": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", + "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/nimma": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/nimma/-/nimma-0.2.3.tgz", + "integrity": "sha512-1ZOI8J+1PKKGceo/5CT5GfQOG6H8I2BencSK06YarZ2wXwH37BSSUWldqJmMJYA5JfqDqffxDXynt6f11AyKcA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsep-plugin/regex": "^1.0.1", + "@jsep-plugin/ternary": "^1.0.2", + "astring": "^1.8.1", + "jsep": "^1.2.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + }, + "optionalDependencies": { + "jsonpath-plus": "^6.0.1 || ^10.1.0", + "lodash.topath": "^4.5.2" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/non-error": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/non-error/-/non-error-0.1.0.tgz", + "integrity": "sha512-TMB1uHiGsHRGv1uYclfhivcnf0/PdFp2pNqRxXjncaAsjYMoisaQJI+SSZCqRq+VliwRTC8tsMQfmrWjDMhkPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "license": "MIT", + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz", + "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-any": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-any/-/p-any-4.0.0.tgz", + "integrity": "sha512-S/B50s+pAVe0wmEZHmBs/9yJXeZ5KhHzOsgKzt0hRdgkoR3DxW9ts46fcsWi/r3VnzsnkKS7q4uimze+zjdryw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-cancelable": "^3.0.0", + "p-some": "^6.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-any/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-event": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-timeout": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-some": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-some/-/p-some-6.0.0.tgz", + "integrity": "sha512-CJbQCKdfSX3fIh8/QKgS+9rjm7OBNUTmwWswAFQAhc8j1NR1dsEDETUEuVUtQHZpV+J03LqWBEwvu0g1Yn+TYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^4.0.0", + "p-cancelable": "^3.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-some/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-latin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-latin/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/patch-console": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz", + "integrity": "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pony-cause": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-1.1.1.tgz", + "integrity": "sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==", + "dev": true, + "license": "0BSD", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true, + "license": "ISC" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/public-ip": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/public-ip/-/public-ip-5.0.0.tgz", + "integrity": "sha512-xaH3pZMni/R2BG7ZXXaWS9Wc9wFlhyDVJF47IJ+3ali0TGv+2PsckKxbmo+rnx3ZxiV2wblVhtdS3bohAP6GGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dns-socket": "^4.2.2", + "got": "^12.0.0", + "is-ip": "^3.1.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/public-ip/node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/public-ip/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/public-ip/node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/public-ip/node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/public-ip/node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/public-ip/node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/normalize-url": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/public-ip/node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer": { + "version": "22.14.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.14.0.tgz", + "integrity": "sha512-MGTR6/pM8zmWbTdazb6FKnwIihzsSEXBPH49mFFU96DNZpQOevCAZMnjBZGlZRGRzRK6aADCavR6SQtrbv5dQw==", + "deprecated": "< 24.15.0 is no longer supported", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.3.0", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1312386", + "puppeteer-core": "22.14.0" + }, + "bin": { + "puppeteer": "lib/esm/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core": { + "version": "22.14.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.14.0.tgz", + "integrity": "sha512-rl4tOY5LcA3e374GAlsGGHc05HL3eGNf5rZ+uxkl6id9zVZKcwcp1Z+Nd6byb6WPiPeecT/dwz8f/iUm+AZQSw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.3.0", + "chromium-bidi": "0.6.2", + "debug": "^4.3.5", + "devtools-protocol": "0.0.1312386", + "ws": "^8.18.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-reconciler": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.32.0.tgz", + "integrity": "sha512-2NPMOzgTlG0ZWdIf3qG+dcbLSoAc/uLfOwckc3ofy5sSK0pLJqnQLpUFxvGcN2rlXSjnVtGeeFLNimCQEj5gOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "peer": true + }, + "node_modules/react-remove-scroll/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "peer": true + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "peer": true + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rehype-katex": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", + "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/katex": "^0.16.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "katex": "^0.16.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-minify-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.2.tgz", + "integrity": "sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-minify-whitespace": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", + "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-math": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", + "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-math": "^3.0.0", + "micromark-extension-math": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx-remove-esm": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/remark-mdx-remove-esm/-/remark-mdx-remove-esm-1.2.3.tgz", + "integrity": "sha512-n6r36SaE+7cno7pmshWbGzYolDVLxJm5EKuw67+q4SPQT6kelNJHyZAiFYYtOB0axh+/1xF4BC57Ec3jncAGXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.4", + "mdast-util-mdxjs-esm": "^2.0.1", + "unist-util-remove": "^4.0.0" + }, + "peerDependencies": { + "unified": "^11" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", + "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-smartypants": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", + "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", + "dev": true, + "license": "MIT", + "dependencies": { + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/retext": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", + "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", + "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-con": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz", + "integrity": "sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~4.1.0", + "minimist": "^1.2.8", + "strip-json-comments": "~3.1.1" + }, + "bin": { + "run-con": "cli.js" + } + }, + "node_modules/run-con/node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz", + "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^2.8.1" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, + "node_modules/seek-bzip/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/serialize-error": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-13.0.1.tgz", + "integrity": "sha512-bBZaRwLH9PN5HbLCjPId4dP5bNGEtumcErgOX952IsvOhVPrm3/AeK1y0UHA/QaPG701eg0yEnOKsCOC6X/kaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "non-error": "^0.1.0", + "type-fest": "^5.4.1" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.4.tgz", + "integrity": "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, + "node_modules/sharp-ico": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/sharp-ico/-/sharp-ico-0.1.5.tgz", + "integrity": "sha512-a3jODQl82NPp1d5OYb0wY+oFaPk7AvyxipIowCHk7pBsZCWgbe0yAkU2OOXdoH0ENyANhyOQbs9xkAiRHcF02Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "decode-ico": "*", + "ico-endec": "*", + "sharp": "*" + } + }, + "node_modules/shiki": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.22.0.tgz", + "integrity": "sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.22.0", + "@shikijs/engine-javascript": "3.22.0", + "@shikijs/engine-oniguruma": "3.22.0", + "@shikijs/langs": "3.22.0", + "@shikijs/themes": "3.22.0", + "@shikijs/types": "3.22.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-eval": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-eval/-/simple-eval-1.0.1.tgz", + "integrity": "sha512-LH7FpTAkeD+y5xQC4fzS+tFtaNlvt3Ib1zKzvhjv/Y+cioV4zIuw4IZr2yhRLu67CWL7FR9/6KXKnjRoZTvGGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsep": "^1.3.6" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/smol-toml": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.5.2.tgz", + "integrity": "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/socket.io": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", + "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz", + "integrity": "sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "~4.4.1", + "ws": "~8.18.3" + } + }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.5.tgz", + "integrity": "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.4.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length/node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamx": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", + "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-natural-number": "^4.0.1" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", + "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tar": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", + "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", + "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" + } + }, + "node_modules/tar-fs/node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-data-view": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz", + "integrity": "sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-trailing-lines": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-2.1.0.tgz", + "integrity": "sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/twoslash": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/twoslash/-/twoslash-0.3.6.tgz", + "integrity": "sha512-VuI5OKl+MaUO9UIW3rXKoPgHI3X40ZgB/j12VY6h98Ae1mCBihjPvhOPeJWlxCYcmSbmeZt5ZKkK0dsVtp+6pA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript/vfs": "^1.6.2", + "twoslash-protocol": "0.3.6" + }, + "peerDependencies": { + "typescript": "^5.5.0" + } + }, + "node_modules/twoslash-protocol": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/twoslash-protocol/-/twoslash-protocol-0.3.6.tgz", + "integrity": "sha512-FHGsJ9Q+EsNr5bEbgG3hnbkvEBdW5STgPU824AHUjB4kw0Dn4p8tABT7Ncg1Ie6V0+mDg3Qpy41VafZXcQhWMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT" }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/unified/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "node_modules/unist-builder": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-4.0.0.tgz", + "integrity": "sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "node_modules/unist-builder/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT" + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/unist-util-find-after/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", "dev": true, "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/unist-util-is/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, "license": "MIT" }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/unist-util-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-4.0.0.tgz", + "integrity": "sha512-HJs1tpkSmRJUzj6fskQrS5oYhBYlmtcvy4SepdDEEsL04FjBrgF0Mgggvxc1/qGBGgW7hRh9+UBK1aqTEnBpIA==", + "dev": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "@types/unist": "^3.0.0" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "node_modules/unist-util-map/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", "dev": true, "license": "MIT", "dependencies": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "node_modules/unist-util-modify-children/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "license": "MIT", "dependencies": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/unist-util-position-from-estree/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } + "license": "MIT" }, - "node_modules/p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "node_modules/unist-util-position/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-remove": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-4.0.0.tgz", + "integrity": "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-event": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", - "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", "dev": true, "license": "MIT", "dependencies": { - "p-timeout": "^2.0.1" + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" }, - "engines": { - "node": ">=6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "node_modules/unist-util-remove-position/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-remove/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", + "node_modules/unist-util-stringify-position/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", "dev": true, "license": "MIT", "dependencies": { - "p-finally": "^1.0.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/parse-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", - "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "node_modules/unist-util-visit-children/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "node_modules/unist-util-visit-parents/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, "license": "MIT" }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "node_modules/unist-util-visit/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">= 10.0.0" } }, - "node_modules/pify": { + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/urijs": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/url-parse-lax": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "dev": true, "license": "MIT", + "dependencies": { + "prepend-http": "^2.0.0" + }, "engines": { "node": ">=4" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "node_modules/url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "dev": true, + "license": "MIT" + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "pinkie": "^2.0.0" + "tslib": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "node_modules/use-callback-ref/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "peer": true + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", "dev": true, "license": "MIT", + "peer": true, + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "node_modules/use-sidecar/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, - "license": "MIT" + "license": "0BSD", + "peer": true }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 4" } }, - "node_modules/query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, "license": "MIT", - "dependencies": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4.0" } }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "bin": { + "uuid": "dist/esm/bin/uuid" } }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", "dev": true, "license": "MIT", "dependencies": { - "lowercase-keys": "^1.0.0" + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/run-con": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz", - "integrity": "sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==", + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "license": "MIT", "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~4.1.0", - "minimist": "^1.2.8", - "strip-json-comments": "~3.1.1" + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" }, - "bin": { - "run-con": "cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/run-con/node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "node_modules/vfile-location/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/vfile-matter": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-5.0.1.tgz", + "integrity": "sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" + "license": "MIT", + "dependencies": { + "vfile": "^6.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/seek-bzip": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", - "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", "dev": true, "license": "MIT", "dependencies": { - "commander": "^2.8.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, - "bin": { - "seek-bunzip": "bin/seek-bunzip", - "seek-table": "bin/seek-bzip-table" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/seek-bzip/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "node_modules/vfile-message/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, "license": "MIT" }, - "node_modules/smol-toml": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.5.2.tgz", - "integrity": "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==", + "node_modules/vfile/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 18" - }, + "license": "MIT" + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "dev": true, + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/cyyynthia" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", - "dev": true, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=4" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, "license": "MIT", "dependencies": { - "sort-keys": "^1.0.0" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sort-keys-length/node_modules/sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, "license": "MIT", "dependencies": { - "is-plain-obj": "^1.0.0" + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/string-width": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", - "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", + "node_modules/widest-line": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", "dev": true, "license": "MIT", "dependencies": { - "get-east-asian-width": "^1.3.0", - "strip-ansi": "^7.1.0" + "string-width": "^7.0.0" }, "engines": { - "node": ">=20" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "license": "MIT", "dependencies": { - "is-natural-number": "^4.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" }, "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" + "node": ">=4.0.0" } }, - "node_modules/to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true, - "license": "MIT" - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=4.0" + } }, - "node_modules/trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, + "license": "ISC", "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", "dev": true, "license": "MIT", "dependencies": { - "prepend-http": "^2.0.0" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">= 4" + "node": ">=12" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "MIT" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=0.4" + "node": ">=8" } }, "node_modules/yauzl": { @@ -2579,6 +16456,57 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoga-layout": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-3.2.1.tgz", + "integrity": "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/zod": { + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.0.tgz", + "integrity": "sha512-Hz+wiY8yD0VLA2k/+nsg2Abez674dDGTai33SwNvMPuf9uIrBC9eFgIMQxBBbHFxVXi8W+5nX9DcAh9YNSQm/w==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.20.4", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.20.4.tgz", + "integrity": "sha512-Un9+kInJ2Zt63n6Z7mLqBifzzPcOyX+b+Exuzf7L1+xqck9Q2EPByyTRduV3kmSPaXaRer1JCsucubpgL1fipg==", + "dev": true, + "license": "ISC", + "peerDependencies": { + "zod": "^3.20.0" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index 88b14ba6d9..77e5539d70 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,17 @@ }, "devDependencies": { "@ocular-d/vale-bin": "^2.29.6", - "markdownlint-cli": "^0.47.0" + "markdownlint-cli": "^0.47.0", + "mint": "^4.2.108" }, "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..12b39e1344 --- /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 -dc +``` + +## 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..c49c9126aa 100644 --- a/reference/api/keys.mdx +++ b/reference/api/keys.mdx @@ -95,13 +95,13 @@ 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 | | **`settings.update`** | Provides access to the [update settings](/reference/api/settings#update-settings) and [reset settings](/reference/api/settings#reset-settings) endpoints and equivalents for all subroutes | | **`stats.get`** | Provides access to the [get stats of an index](/reference/api/stats#get-stats-of-an-index) endpoint and the [get stats of all indexes](/reference/api/stats#get-stats-of-all-indexes) endpoint. For the latter, **non-authorized `indexes` are omitted from the response** | -| **`dumps.create`** | Provides access to the [create dump](/reference/api/dump#create-a-dump) endpoint. **Not restricted by `indexes`** | +| **`dumps.create`** | Provides access to the [create dump](/reference/api/backups/create-dump) endpoint. **Not restricted by `indexes`** | | **`snapshots.create`** | Provides access to the [create snapshot](/reference/api/snapshots#create-a-snapshot) endpoint. **Not restricted by `indexes`** | | **`version`** | Provides access to the [get Meilisearch version](/reference/api/version#get-version-of-meilisearch) endpoint | | **`keys.get`** | Provides access to the [get all keys](#get-all-keys) endpoint | 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..92f979681c 100644 --- a/reference/errors/error_codes.mdx +++ b/reference/errors/error_codes.mdx @@ -8,7 +8,7 @@ This page is an exhaustive list of Meilisearch API errors. ## `api_key_already_exists` -A key with this [`uid`](/reference/api/keys#uid) already exists. +A key with this [`uid`](/reference/api/keys/get-api-key#response-uid) already exists. ## `api_key_not_found` @@ -20,7 +20,7 @@ The request is invalid, check the error message for more information. ## `batch_not_found` -The requested batch does not exist. Please ensure that you are using the correct [`uid`](/reference/api/batches#uid). +The requested batch does not exist. Please ensure that you are using the correct [`uid`](/reference/api/async-task-management/list-batches). ## `database_size_limit_reached` @@ -40,7 +40,7 @@ An error occurred during the dump creation process. The task was aborted. ## `facet_search_disabled` -The [`/facet-search`](/reference/api/facet_search) route has been queried while [the `facetSearch` index setting](/reference/api/settings#facet-search) is set to `false`. +The [`/facet-search`](/reference/api/facet-search/search-in-facets) route has been queried while [the `facetSearch` index setting](/reference/api/settings/get-facetsearch) is set to `false`. ## `feature_not_enabled` @@ -48,55 +48,55 @@ You have tried using an [experimental feature](/learn/resources/experimental_fea ## `immutable_api_key_actions` -The [`actions`](/reference/api/keys#actions) field of an API key cannot be modified. +The [`actions`](/reference/api/keys/list-api-keys) field of an API key cannot be modified. ## `immutable_api_key_created_at` -The [`createdAt`](/reference/api/keys#createdat) field of an API key cannot be modified. +The [`createdAt`](/reference/api/keys/get-api-key#response-created-at) field of an API key cannot be modified. ## `immutable_api_key_expires_at` -The [`expiresAt`](/reference/api/keys#expiresat) field of an API key cannot be modified. +The [`expiresAt`](/reference/api/keys/get-api-key#response-expiresat) field of an API key cannot be modified. ## `immutable_api_key_indexes` -The [`indexes`](/reference/api/keys#indexes) field of an API key cannot be modified. +The [`indexes`](/reference/api/keys/get-api-key#response-indexes) field of an API key cannot be modified. ## `immutable_api_key_key` -The [`key`](/reference/api/keys#key) field of an API key cannot be modified. +The [`key`](/reference/api/keys/get-api-key#response-key) field of an API key cannot be modified. ## `immutable_api_key_uid` -The [`uid`](/reference/api/keys#uid) field of an API key cannot be modified. +The [`uid`](/reference/api/keys/get-api-key#response-uid) field of an API key cannot be modified. ## `immutable_api_key_updated_at` -The [`updatedAt`](/reference/api/keys#updatedat) field of an API key cannot be modified. +The [`updatedAt`](/reference/api/keys/get-api-key#response-updated-at) field of an API key cannot be modified. ## `immutable_index_uid` -The [`uid`](/reference/api/indexes#index-object) field of an index cannot be modified. +The [`uid`](/reference/api/indexes/get-index) field of an index cannot be modified. ## `immutable_index_updated_at` -The [`updatedAt`](/reference/api/indexes#index-object) field of an index cannot be modified. +The [`updatedAt`](/reference/api/indexes/get-index) field of an index cannot be modified. -### `immutable_webhook` +## `immutable_webhook` -You tried to modify a reserved [webhook](/reference/api/webhooks). Reserved webhooks are configured by Meilisearch Cloud and have `isEditable` set to `true`. Webhooks created with an instance option are also immutable. +You tried to modify a reserved [webhook](/reference/api/webhooks/list-webhooks). Reserved webhooks are configured by Meilisearch Cloud and have `isEditable` set to `true`. Webhooks created with an instance option are also immutable. -### `immutable_webhook_uuid` +## `immutable_webhook_uuid` You tried to manually set a webhook `uuid`. Meilisearch automatically generates `uuid` for webhooks. -### `immutable_webhook_is_editable` +## `immutable_webhook_is_editable` You tried to manually set a webhook's `isEditable` field. Meilisearch automatically sets `isEditable` for all webhooks. Only reserved webhooks have `isEditable` set to `false`. ## `index_already_exists` -An index with this [`uid`](/reference/api/indexes#index-object) already exists, check out our guide on [index creation](/learn/getting_started/indexes). +An index with this [`uid`](/reference/api/indexes/get-index) already exists, check out our guide on [index creation](/learn/getting_started/indexes). ## `index_creation_failed` @@ -112,7 +112,7 @@ The requested index already has a primary key that [cannot be changed](/learn/ge ## `index_primary_key_multiple_candidates_found` -[Primary key inference](/learn/getting_started/primary_key#meilisearch-guesses-your-primary-key) failed because the received documents contain multiple fields ending with `id`. Use the [update index endpoint](/reference/api/indexes#update-an-index) to manually set a primary key. +[Primary key inference](/learn/getting_started/primary_key#meilisearch-guesses-your-primary-key) failed because the received documents contain multiple fields ending with `id`. Use the [update index endpoint](/reference/api/indexes/update-index) to manually set a primary key. ## `internal` @@ -124,55 +124,55 @@ The requested resources are protected with an API key. The provided API key is i ## `invalid_api_key_actions` -The [`actions`](/reference/api/keys#actions) field for the provided API key resource is invalid. It should be an array of strings representing action names. +The [`actions`](/reference/api/keys/list-api-keys) field for the provided API key resource is invalid. It should be an array of strings representing action names. ## `invalid_api_key_description` -The [`description`](/reference/api/keys#description) field for the provided API key resource is invalid. It should either be a string or set to `null`. +The [`description`](/reference/api/keys/get-api-key#response-description) field for the provided API key resource is invalid. It should either be a string or set to `null`. ## `invalid_api_key_expires_at` -The [`expiresAt`](/reference/api/keys#expiresat) field for the provided API key resource is invalid. It should either show a future date or datetime in the [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format or be set to `null`. +The [`expiresAt`](/reference/api/keys/get-api-key#response-expiresat) field for the provided API key resource is invalid. It should either show a future date or datetime in the [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format or be set to `null`. ## `invalid_api_key_indexes` -The [`indexes`](/reference/api/keys#indexes) field for the provided API key resource is invalid. It should be an array of strings representing index names. +The [`indexes`](/reference/api/keys/get-api-key#response-indexes) field for the provided API key resource is invalid. It should be an array of strings representing index names. ## `invalid_api_key_limit` -The [`limit`](/reference/api/keys#query-parameters) parameter is invalid. It should be an integer. +The [`limit`](/reference/api/keys/list-api-keys) parameter is invalid. It should be an integer. ## `invalid_api_key_name` -The given [`name`](/reference/api/keys#name) is invalid. It should either be a string or set to `null`. +The given [`name`](/reference/api/keys/get-api-key#response-name) is invalid. It should either be a string or set to `null`. ## `invalid_api_key_offset` -The [`offset`](/reference/api/keys#query-parameters) parameter is invalid. It should be an integer. +The [`offset`](/reference/api/keys/list-api-keys) parameter is invalid. It should be an integer. ## `invalid_api_key_uid` -The given [`uid`](/reference/api/keys#uid) is invalid. The `uid` must follow the [uuid v4](https://www.sohamkamani.com/uuid-versions-explained) format. +The given [`uid`](/reference/api/keys/get-api-key#response-uid) is invalid. The `uid` must follow the [uuid v4](https://www.sohamkamani.com/uuid-versions-explained) format. ## `invalid_search_attributes_to_search_on` -The value passed to [`attributesToSearchOn`](/reference/api/search#customize-attributes-to-search-on-at-search-time) is invalid. `attributesToSearchOn` accepts an array of strings indicating document attributes. Attributes given to `attributesToSearchOn` must be present in the [`searchableAttributes` list](/learn/relevancy/displayed_searchable_attributes#the-searchableattributes-list). +The value passed to [`attributesToSearchOn`](/reference/api/search/search-with-post#body-attributes-to-search-on) is invalid. `attributesToSearchOn` accepts an array of strings indicating document attributes. Attributes given to `attributesToSearchOn` must be present in the [`searchableAttributes` list](/learn/relevancy/displayed_searchable_attributes#the-searchableattributes-list). ## `invalid_search_media` -The value passed to [`media`](/reference/api/search#media) is not a valid JSON object. +The value passed to [`media`](/reference/api/search/search-with-post#body-media) is not a valid JSON object. ## `invalid_search_media_and_vector` -The search query contains non-`null` values for both [`media`](/reference/api/search#media) and [`vector`](/reference/api/search#media). These two parameters are mutually exclusive, since `media` generates vector embeddings via the embedder configured in `hybrid`. +The search query contains non-`null` values for both [`media`](/reference/api/search/search-with-post#body-media) and [`vector`](/reference/api/search/search-with-post#body-media). These two parameters are mutually exclusive, since `media` generates vector embeddings via the embedder configured in `hybrid`. ## `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) is not supported by Meilisearch. Currently, Meilisearch only supports JSON, CSV, and NDJSON. ## `invalid_document_csv_delimiter` -The [`csvDelimiter`](/reference/api/documents#add-or-replace-documents) parameter is invalid. It should either be a string or [a single ASCII character](https://www.rfc-editor.org/rfc/rfc20). +The [`csvDelimiter`](/reference/api/documents/add-or-replace-documents) parameter is invalid. It should either be a string or [a single ASCII character](https://www.rfc-editor.org/rfc/rfc20). ## `invalid_document_id` @@ -180,32 +180,32 @@ The provided [document identifier](/learn/getting_started/primary_key#document-i ## `invalid_document_fields` -The [`fields`](/reference/api/documents#query-parameters) parameter is invalid. It should be a string. +The [`fields`](/reference/api/documents/list-documents-with-get) parameter is invalid. It should be a string. ## `invalid_document_filter` This error occurs if: -- The [`filter`](/reference/api/documents#query-parameters) parameter is invalid - - It should be a string, array of strings, or array of array of strings for the [get documents with POST endpoint](/reference/api/documents#get-documents-with-post) - - It should be a string for the [get documents with GET endpoint](/reference/api/documents#get-documents-with-get) -- The attribute used for filtering is not defined in the [`filterableAttributes` list](/reference/api/settings#filterable-attributes) +- The [`filter`](/reference/api/documents/list-documents-with-get) parameter is invalid + - It should be a string, array of strings, or array of array of strings for the [get documents with POST endpoint](/reference/api/documents/documents-by-query-post) + - It should be a string for the [get documents with GET endpoint](/reference/api/documents/list-documents-with-get) +- The attribute used for filtering is not defined in the [`filterableAttributes` list](/reference/api/settings/get-filterableattributes) - The [filter expression](/learn/filtering_and_sorting/filter_expression_reference) has a missing or invalid operator. [Read more about our supported operators](/learn/filtering_and_sorting/filter_expression_reference) ## `invalid_document_limit` -The [`limit`](/reference/api/documents#query-parameters) parameter is invalid. It should be an integer. +The [`limit`](/reference/api/documents/list-documents-with-get) parameter is invalid. It should be an integer. ## `invalid_document_offset` -The [`offset`](/reference/api/documents#query-parameters) parameter is invalid. It should be an integer. +The [`offset`](/reference/api/documents/list-documents-with-get) parameter is invalid. It should be an integer. ## `invalid_document_sort` This error occurs if: -- The syntax for the [`sort`](/reference/api/documents#body) parameter is invalid -- The attribute used for sorting is not defined in the [`sortableAttributes`](/reference/api/settings#sortable-attributes) list or the `sort` ranking rule is missing from the settings +- The syntax for the [`sort`](/reference/api/documents/documents-by-query-post) parameter is invalid +- The attribute used for sorting is not defined in the [`sortableAttributes`](/reference/api/settings/get-sortableattributes) list or the `sort` ranking rule is missing from the settings - A reserved keyword like `_geo`, `_geoDistance`, `_geoRadius`, or `_geoBoundingBox` is used as a filter ## `invalid_document_geo_field` @@ -238,7 +238,7 @@ The provided index export filter is not a valid [filter expression](/learn/filte ## `invalid_facet_search_facet_name` -The attribute used for the `facetName` field is either not a string or not defined in the [`filterableAttributes` list](/reference/api/settings#filterable-attributes). +The attribute used for the `facetName` field is either not a string or not defined in the [`filterableAttributes` list](/reference/api/settings/get-filterableattributes). ## `invalid_facet_search_facet_query` @@ -246,11 +246,11 @@ The provided value for `facetQuery` is invalid. It should either be a string or ## `invalid_index_limit` -The [`limit`](/reference/api/indexes#query-parameters) parameter is invalid. It should be an integer. +The [`limit`](/reference/api/indexes/list-indexes) parameter is invalid. It should be an integer. ## `invalid_index_offset` -The [`offset`](/reference/api/indexes#query-parameters) parameter is invalid. It should be an integer. +The [`offset`](/reference/api/indexes/list-indexes) parameter is invalid. It should be an integer. ## `invalid_index_uid` @@ -258,7 +258,7 @@ There is an error in the provided index format, check out our guide on [index cr ## `invalid_index_primary_key` -The [`primaryKey`](/reference/api/indexes#body-2) field is invalid. It should either be a string or set to `null`. +The [`primaryKey`](/reference/api/indexes/swap-indexes) field is invalid. It should either be a string or set to `null`. ## `invalid_multi_search_query_federated` @@ -314,129 +314,129 @@ Two or more indexes have a different `faceting.sortFacetValuesBy` for the same r ## `invalid_network_self` -The [network object](/reference/api/network#the-network-object) contains a `self` that is not a string or `null`. +The [network object](/reference/api/network/get-network) contains a `self` that is not a string or `null`. ## `invalid_network_remotes` -The [network object](/reference/api/network#the-network-object) contains a `remotes` that is not an object or `null`. +The [network object](/reference/api/network/get-network) contains a `remotes` that is not an object or `null`. ## `invalid_network_url` -One of the remotes in the [network object](/reference/api/network#the-network-object) contains a `url` that is not a string. +One of the remotes in the [network object](/reference/api/network/get-network) contains a `url` that is not a string. ## `invalid_network_search_api_key` -One of the remotes in the [network object](/reference/api/network#the-network-object) contains a `searchApiKey` that is not a string or `null`. +One of the remotes in the [network object](/reference/api/network/get-network) contains a `searchApiKey` that is not a string or `null`. ## `invalid_search_attributes_to_crop` -The [`attributesToCrop`](/reference/api/search#attributes-to-crop) parameter is invalid. It should be an array of strings, a string, or set to `null`. +The [`attributesToCrop`](/reference/api/search/search-with-post#body-attributes-to-crop) parameter is invalid. It should be an array of strings, a string, or set to `null`. ## `invalid_search_attributes_to_highlight` -The [`attributesToHighlight`](/reference/api/search#attributes-to-highlight) parameter is invalid. It should be an array of strings, a string, or set to `null`. +The [`attributesToHighlight`](/reference/api/search/search-with-post#body-attributes-to-highlight) parameter is invalid. It should be an array of strings, a string, or set to `null`. ## `invalid_search_attributes_to_retrieve` -The [`attributesToRetrieve`](/reference/api/search#attributes-to-retrieve) parameter is invalid. It should be an array of strings, a string, or set to `null`. +The [`attributesToRetrieve`](/reference/api/search/search-with-post#body-attributes-to-retrieve) parameter is invalid. It should be an array of strings, a string, or set to `null`. ## `invalid_search_crop_length` -The [`cropLength`](/reference/api/search#crop-length) parameter is invalid. It should be an integer. +The [`cropLength`](/reference/api/search/search-with-post#body-crop-length) parameter is invalid. It should be an integer. ## `invalid_search_crop_marker` -The [`cropMarker`](/reference/api/search#crop-marker) parameter is invalid. It should be a string or set to `null`. +The [`cropMarker`](/reference/api/search/search-with-post#body-crop-marker) parameter is invalid. It should be a string or set to `null`. -### `invalid_search_embedder` +## `invalid_search_embedder` -[`embedder`](/reference/api/search#hybrid-search) is invalid. It should be a string corresponding to the name of a configured embedder. +[`embedder`](/reference/api/search/search-with-post#body-hybrid) is invalid. It should be a string corresponding to the name of a configured embedder. ## `invalid_search_facets` This error occurs if: -- The [`facets`](/reference/api/search#facets) parameter is invalid. It should be an array of strings, a string, or set to `null` -- The attribute used for faceting is not defined in the [`filterableAttributes` list](/reference/api/settings#filterable-attributes) +- The [`facets`](/reference/api/search/search-with-post#body-facets) parameter is invalid. It should be an array of strings, a string, or set to `null` +- The attribute used for faceting is not defined in the [`filterableAttributes` list](/reference/api/settings/get-filterableattributes) ## `invalid_search_filter` This error occurs if: -- The syntax for the [`filter`](/reference/api/search#filter) parameter is invalid -- The attribute used for filtering is not defined in the [`filterableAttributes` list](/reference/api/settings#filterable-attributes) +- The syntax for the [`filter`](/reference/api/search/search-with-post#body-filter) parameter is invalid +- The attribute used for filtering is not defined in the [`filterableAttributes` list](/reference/api/settings/get-filterableattributes) - A reserved keyword like `_geo`, `_geoDistance`, or `_geoPoint` is used as a filter ## `invalid_search_highlight_post_tag` -The [`highlightPostTag`](/reference/api/search#highlight-tags) parameter is invalid. It should be a string. +The [`highlightPostTag`](/reference/api/search/search-with-post#body-highlight-pre-tag) parameter is invalid. It should be a string. ## `invalid_search_highlight_pre_tag` -The [`highlightPreTag`](/reference/api/search#highlight-tags) parameter is invalid. It should be a string. +The [`highlightPreTag`](/reference/api/search/search-with-post#body-highlight-pre-tag) parameter is invalid. It should be a string. ## `invalid_search_hits_per_page` -The [`hitsPerPage`](/reference/api/search#number-of-results-per-page) parameter is invalid. It should be an integer. +The [`hitsPerPage`](/reference/api/search/search-with-post#body-hits-per-page) parameter is invalid. It should be an integer. ## `invalid_search_hybrid_query` -The [`hybrid`](/reference/api/search#hybrid-search) parameter is neither `null` nor an object, or it is an object with unknown keys. +The [`hybrid`](/reference/api/search/search-with-post#body-hybrid) parameter is neither `null` nor an object, or it is an object with unknown keys. ## `invalid_search_limit` -The [`limit`](/reference/api/search#limit) parameter is invalid. It should be an integer. +The [`limit`](/reference/api/search/search-with-post#body-limit) parameter is invalid. It should be an integer. ## `invalid_search_locales` -The [`locales`](/reference/api/search#query-locales) parameter is invalid. +The [`locales`](/reference/api/search/search-with-post#body-locales) parameter is invalid. ## `invalid_settings_embedder` -The [`embedders`](/reference/api/settings#embedders) index setting value is invalid. +The [`embedders`](/reference/api/settings/get-embedders) index setting value is invalid. ## `invalid_settings_facet_search` -The [`facetSearch`](/reference/api/settings#facet-search) index setting value is invalid. +The [`facetSearch`](/reference/api/settings/get-facetsearch) index setting value is invalid. ## `invalid_settings_localized_attributes` -The [`localizedAttributes`](/reference/api/settings#localized-attributes) index setting value is invalid. +The [`localizedAttributes`](/reference/api/settings/get-localized-attributes) index setting value is invalid. ## `invalid_search_matching_strategy` -The [`matchingStrategy`](/reference/api/search#matching-strategy) parameter is invalid. It should either be set to `last` or `all`. +The [`matchingStrategy`](/reference/api/search/search-with-post#body-matching-strategy) parameter is invalid. It should either be set to `last` or `all`. ## `invalid_search_offset` -The [`offset`](/reference/api/search#offset) parameter is invalid. It should be an integer. +The [`offset`](/reference/api/search/search-with-post#body-offset) parameter is invalid. It should be an integer. ## `invalid_settings_prefix_search` -The [`prefixSearch`](/reference/api/settings#prefix-search) index setting value is invalid. +The [`prefixSearch`](/reference/api/settings/get-prefix-search) index setting value is invalid. ## `invalid_search_page` -The [`page`](/reference/api/search#page) parameter is invalid. It should be an integer. +The [`page`](/reference/api/search/search-with-post#body-page) parameter is invalid. It should be an integer. ## `invalid_search_q` -The [`q`](/reference/api/search#query-q) parameter is invalid. It should be a string or set to `null` +The [`q`](/reference/api/search/search-with-post#body-q) parameter is invalid. It should be a string or set to `null` ## `invalid_search_ranking_score_threshold` -The [`rankingScoreThreshold`](/reference/api/search#ranking-score-threshold) in a search or multi-search request is not a number between `0.0` and `1.0`. +The [`rankingScoreThreshold`](/reference/api/search/search-with-post#body-show-ranking-score-threshold) in a search or multi-search request is not a number between `0.0` and `1.0`. ## `invalid_search_show_matches_position` -The [`showMatchesPosition`](/reference/api/search#show-matches-position) parameter is invalid. It should either be a boolean or set to `null`. +The [`showMatchesPosition`](/reference/api/search/search-with-post#body-show-matches-position) parameter is invalid. It should either be a boolean or set to `null`. ## `invalid_search_sort` This error occurs if: -- The syntax for the [`sort`](/reference/api/search#sort) parameter is invalid -- The attribute used for sorting is not defined in the [`sortableAttributes`](/reference/api/settings#sortable-attributes) list or the `sort` ranking rule is missing from the settings +- The syntax for the [`sort`](/reference/api/search/search-with-post#body-sort) parameter is invalid +- The attribute used for sorting is not defined in the [`sortableAttributes`](/reference/api/settings/get-sortableattributes) list or the `sort` ranking rule is missing from the settings - A reserved keyword like `_geo`, `_geoDistance`, `_geoRadius`, or `_geoBoundingBox` is used as a filter ## `invalid_settings_displayed_attributes` @@ -449,58 +449,58 @@ The value of [distinct attributes](/learn/relevancy/distinct_attribute) is inval ## `invalid_settings_faceting_sort_facet_values_by` -The value provided for the [`sortFacetValuesBy`](/reference/api/settings#faceting-object) object is incorrect. The accepted values are `alpha` or `count`. +The value provided for the [`sortFacetValuesBy`](/reference/api/settings/get-faceting) object is incorrect. The accepted values are `alpha` or `count`. ## `invalid_settings_faceting_max_values_per_facet` -The value for the [`maxValuesPerFacet`](/reference/api/settings#faceting-object) field is invalid. It should either be an integer or set to `null`. +The value for the [`maxValuesPerFacet`](/reference/api/settings/get-faceting) field is invalid. It should either be an integer or set to `null`. ## `invalid_settings_filterable_attributes` -The value of [filterable attributes](/reference/api/settings#filterable-attributes) is invalid. It should be an empty array, an array of strings, or set to `null`. +The value of [filterable attributes](/reference/api/settings/get-filterableattributes) is invalid. It should be an empty array, an array of strings, or set to `null`. ## `invalid_settings_pagination` -The value for the [`maxTotalHits`](/reference/api/settings#pagination-object) field is invalid. It should either be an integer or set to `null`. +The value for the [`maxTotalHits`](/reference/api/settings/update-pagination) field is invalid. It should either be an integer or set to `null`. ## `invalid_settings_ranking_rules` This error occurs if: -- The [settings payload](/reference/api/settings#body) has an invalid format +- The [settings payload](/reference/api/settings/update-all-settings) has an invalid format - A non-existent ranking rule is specified - A custom ranking rule is malformed - A reserved keyword like `_geo`, `_geoDistance`, `_geoRadius`, `_geoBoundingBox`, or `_geoPoint` is used as a custom ranking rule ## `invalid_settings_searchable_attributes` -The value of [searchable attributes](/reference/api/settings#searchable-attributes) is invalid. It should be an empty array, an array of strings or set to `null`. +The value of [searchable attributes](/reference/api/settings/get-searchableattributes) is invalid. It should be an empty array, an array of strings or set to `null`. ## `invalid_settings_search_cutoff_ms` -The specified value for [`searchCutoffMs](/reference/api/settings#search-cutoff) is invalid. It should be an integer indicating the cutoff in milliseconds. +The specified value for [`searchCutoffMs](/reference/api/settings/update-search-cutoff) is invalid. It should be an integer indicating the cutoff in milliseconds. ## `invalid_settings_sortable_attributes` -The value of [sortable attributes](/reference/api/settings#sortable-attributes) is invalid. It should be an empty array, an array of strings or set to `null`. +The value of [sortable attributes](/reference/api/settings/get-sortableattributes) is invalid. It should be an empty array, an array of strings or set to `null`. ## `invalid_settings_stop_words` -The value of [stop words](/reference/api/settings#stop-words) is invalid. It should be an empty array, an array of strings or set to `null`. +The value of [stop words](/reference/api/settings/get-stopwords) is invalid. It should be an empty array, an array of strings or set to `null`. ## `invalid_settings_synonyms` -The value of the [synonyms](/reference/api/settings#synonyms) is invalid. It should either be an object or set to `null`. +The value of the [synonyms](/reference/api/settings/get-synonyms) is invalid. It should either be an object or set to `null`. ## `invalid_settings_typo_tolerance` This error occurs if: -- The [`enabled`](/reference/api/settings#typo-tolerance-object) field is invalid. It should either be a boolean or set to `null` -- The [`disableOnAttributes`](/reference/api/settings#typo-tolerance-object) field is invalid. It should either be an array of strings or set to `null` -- The [`disableOnWords`](/reference/api/settings#typo-tolerance-object) field is invalid. It should either be an array of strings or set to `null` -- The [`minWordSizeForTypos`](/reference/api/settings#typo-tolerance-object) field is invalid. It should either be an integer or set to `null` -- The value of either [`oneTypo`](/reference/api/settings#typo-tolerance-object) or [`twoTypos`](/reference/api/settings#typo-tolerance-object) is invalid. It should either be an integer or set to `null` +- The [`enabled`](/reference/api/settings/get-typotolerance) field is invalid. It should either be a boolean or set to `null` +- The [`disableOnAttributes`](/reference/api/settings/get-typotolerance) field is invalid. It should either be an array of strings or set to `null` +- The [`disableOnWords`](/reference/api/settings/get-typotolerance) field is invalid. It should either be an array of strings or set to `null` +- The [`minWordSizeForTypos`](/reference/api/settings/get-typotolerance) field is invalid. It should either be an integer or set to `null` +- The value of either [`oneTypo`](/reference/api/settings/get-typotolerance) or [`twoTypos`](/reference/api/settings/get-typotolerance) is invalid. It should either be an integer or set to `null` ## `invalid_similar_id` @@ -512,37 +512,37 @@ Meilisearch could not find the target document. Make sure your target document i ## `invalid_similar_attributes_to_retrieve` -[`attributesToRetrieve`](/reference/api/search#attributes-to-retrieve) is invalid. It should be an array of strings, a string, or set to null. +[`attributesToRetrieve`](/reference/api/search/search-with-post#body-attributes-to-retrieve) is invalid. It should be an array of strings, a string, or set to null. -### `invalid_similar_embedder` +## `invalid_similar_embedder` -[`embedder`](/reference/api/similar#body) is invalid. It should be a string corresponding to the name of a configured embedder. +[`embedder`](/reference/api/similar-documents/get-similar-documents-with-post) is invalid. It should be a string corresponding to the name of a configured embedder. ## `invalid_similar_filter` -[`filter`](/reference/api/search#filter) is invalid or contains a filter expression with a missing or invalid operator. Filter expressions must be a string, array of strings, or array of array of strings for the POST endpoint. It must be a string for the GET endpoint. +[`filter`](/reference/api/search/search-with-post#body-filter) is invalid or contains a filter expression with a missing or invalid operator. Filter expressions must be a string, array of strings, or array of array of strings for the POST endpoint. It must be a string for the GET endpoint. Meilisearch also throws this error if the attribute used for filtering is not defined in the `filterableAttributes` list. ## `invalid_similar_limit` -[`limit`](/reference/api/search#limit) is invalid. It should be an integer. +[`limit`](/reference/api/search/search-with-post#body-limit) is invalid. It should be an integer. ## `invalid_similar_offset` -[`offset`](/reference/api/search#offset) is invalid. It should be an integer. +[`offset`](/reference/api/search/search-with-post#body-offset) is invalid. It should be an integer. ## `invalid_similar_show_ranking_score` -[`ranking_score`](/reference/api/search#ranking-score) is invalid. It should be a boolean. +[`ranking_score`](/reference/api/search/search-with-post#body-show-ranking-score) is invalid. It should be a boolean. ## `invalid_similar_show_ranking_score_details` -[`ranking_score_details`](/reference/api/search#ranking-score-details) is invalid. It should be a boolean. +[`ranking_score_details`](/reference/api/search/search-with-post#body-show-ranking-score-details) is invalid. It should be a boolean. ## `invalid_similar_ranking_score_threshold` -The [`rankingScoreThreshold`](/reference/api/search#ranking-score-threshold) in a similar documents request is not a number between `0.0` and `1.0`. +The [`rankingScoreThreshold`](/reference/api/search/search-with-post#body-show-ranking-score-threshold) in a similar documents request is not a number between `0.0` and `1.0`. ## `invalid_state` @@ -554,76 +554,76 @@ The `data.ms` folder is in an invalid state. Your `b` file is corrupted or the ` ## `invalid_swap_duplicate_index_found` -The indexes used in the [`indexes`](/reference/api/indexes#body-2) array for a [swap index](/reference/api/indexes#swap-indexes) request have been declared multiple times. You must declare each index only once. +The indexes used in the [`indexes`](/reference/api/indexes/swap-indexes) array for a [swap index](/reference/api/indexes/swap-indexes) request have been declared multiple times. You must declare each index only once. ## `invalid_swap_indexes` This error happens if: -- The payload doesn't contain exactly two index [`uids`](/reference/api/indexes#body-2) for a swap operation -- The payload contains an invalid index name in the [`indexes`](/reference/api/indexes#body-2) array +- The payload doesn't contain exactly two index [`uids`](/reference/api/indexes/swap-indexes) for a swap operation +- The payload contains an invalid index name in the [`indexes`](/reference/api/indexes/swap-indexes) array ## `invalid_task_after_enqueued_at` -The [`afterEnqueuedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. +The [`afterEnqueuedAt`](/reference/api/async-task-management/list-tasks) query parameter is invalid. ## `invalid_task_after_finished_at` -The [`afterFinishedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. +The [`afterFinishedAt`](/reference/api/async-task-management/list-tasks) query parameter is invalid. ## `invalid_task_after_started_at` -The [`afterStartedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. +The [`afterStartedAt`](/reference/api/async-task-management/list-tasks) query parameter is invalid. ## `invalid_task_before_enqueued_at` -The [`beforeEnqueuedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. +The [`beforeEnqueuedAt`](/reference/api/async-task-management/list-tasks) query parameter is invalid. ## `invalid_task_before_finished_at` -The [`beforeFinishedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. +The [`beforeFinishedAt`](/reference/api/async-task-management/list-tasks) query parameter is invalid. ## `invalid_task_before_started_at` -The [`beforeStartedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. +The [`beforeStartedAt`](/reference/api/async-task-management/list-tasks) query parameter is invalid. ## `invalid_task_canceled_by` -The [`canceledBy`](/reference/api/tasks#canceledby) query parameter is invalid. It should be an integer. Multiple `uid`s should be separated by commas (`,`). +The [`canceledBy`](/reference/api/async-task-management/list-tasks) query parameter is invalid. It should be an integer. Multiple `uid`s should be separated by commas (`,`). ## `invalid_task_index_uids` -The [`indexUids`](/reference/api/tasks#query-parameters) query parameter contains an invalid index uid. +The [`indexUids`](/reference/api/async-task-management/list-tasks) query parameter contains an invalid index uid. ## `invalid_task_limit` -The [`limit`](/reference/api/tasks#query-parameters) parameter is invalid. It must be an integer. +The [`limit`](/reference/api/async-task-management/list-tasks) parameter is invalid. It must be an integer. ## `invalid_task_statuses` -The requested task status is invalid. Please use one of the [possible values](/reference/api/tasks#status). +The requested task status is invalid. Please use one of the [possible values](/reference/api/async-task-management/get-task). ## `invalid_task_types` -The requested task type is invalid. Please use one of the [possible values](/reference/api/tasks#type). +The requested task type is invalid. Please use one of the [possible values](/reference/api/async-task-management/get-task). ## `invalid_task_uids` -The [`uids`](/reference/api/tasks#query-parameters) query parameter is invalid. +The [`uids`](/reference/api/async-task-management/list-tasks) query parameter is invalid. -### `invalid_webhooks` +## `invalid_webhooks` The create webhook request did not contain a valid JSON payload. Meilisearch also returns this error when you try to create more than 20 webhooks. -### `invalid_webhook_url` +## `invalid_webhook_url` The provided webhook URL isn’t a valid JSON string, is `null`, is missing, or its value cannot be parsed as a valid URL. -### `invalid_webhook_headers` +## `invalid_webhook_headers` The provided webhook `headers` field is not a JSON object or not a valid HTTP header. Meilisearch also returns this error if you set more than 200 header fields for a single webhook. -### `invalid_webhook_uuid` +## `invalid_webhook_uuid` The provided webhook `uuid` is not a valid uuid v4 value. @@ -637,19 +637,19 @@ 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) does not match the request body payload format or the format is invalid. ## `missing_api_key_actions` -The [`actions`](/reference/api/keys#actions) field is missing from payload. +The [`actions`](/reference/api/keys/list-api-keys) field is missing from payload. ## `missing_api_key_expires_at` -The [`expiresAt`](/reference/api/keys#expiresat) field is missing from payload. +The [`expiresAt`](/reference/api/keys/get-api-key#response-expiresat) field is missing from payload. ## `missing_api_key_indexes` -The [`indexes`](/reference/api/keys#indexes) field is missing from payload. +The [`indexes`](/reference/api/keys/get-api-key#response-indexes) field is missing from payload. ## `missing_authorization_header` @@ -660,11 +660,11 @@ 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). Currently, Meilisearch only supports JSON, CSV, and NDJSON. ## `missing_document_filter` -This payload is missing the [`filter`](/reference/api/documents#body-3) field. +This payload is missing the [`filter`](/reference/api/documents/delete-documents-by-filter) field. ## `missing_document_id` @@ -672,11 +672,11 @@ A document does not contain any value for the required primary key, and is thus ## `missing_index_uid` -The payload is missing the [`uid`](/reference/api/indexes#index-object) field. +The payload is missing the [`uid`](/reference/api/indexes/get-index) field. ## `missing_facet_search_facet_name` -The [`facetName`](/reference/api/facet_search#body) parameter is required. +The [`facetName`](/reference/api/facet-search/search-in-facets) parameter is required. ## `missing_master_key` @@ -684,7 +684,7 @@ You need to set a master key before you can access the `/keys` route. Read more ## `missing_network_url` -One of the remotes in the [network object](/reference/api/network#the-network-object) does not contain the `url` field. +One of the remotes in the [network object](/reference/api/network/get-network) does not contain the `url` field. ## `missing_payload` @@ -692,18 +692,18 @@ The Content-Type header was specified, but no request body was sent to the serve ## `missing_swap_indexes` -The index swap payload is missing the [`indexes`](/reference/api/indexes#swap-indexes) object. +The index swap payload is missing the [`indexes`](/reference/api/indexes/swap-indexes) object. ## `missing_task_filters` -The [cancel tasks](/reference/api/tasks#cancel-tasks) and [delete tasks](/reference/api/tasks#delete-tasks) endpoints require one of the available query parameters. +The [cancel tasks](/reference/api/async-task-management/cancel-tasks) and [delete tasks](/reference/api/async-task-management/delete-tasks) endpoints require one of the available query parameters. ## `no_space_left_on_device` This error occurs if: - The host system partition reaches its maximum capacity and can no longer accept writes -- The tasks queue reaches its limit and can no longer accept writes. You can delete tasks using the [delete tasks endpoint](/reference/api/tasks#delete-tasks) to continue write operations +- The tasks queue reaches its limit and can no longer accept writes. You can delete tasks using the [delete tasks endpoint](/reference/api/async-task-management/delete-tasks) to continue write operations ## `not_found` @@ -715,7 +715,7 @@ The payload sent to the server was too large. Check out this [guide](/learn/self ## `task_not_found` -The requested task does not exist. Please ensure that you are using the correct [`uid`](/reference/api/tasks#uid). +The requested task does not exist. Please ensure that you are using the correct [`uid`](/reference/api/async-task-management/get-task). ## `too_many_open_files` @@ -735,32 +735,30 @@ Error while generating embeddings. You may often see this error when the embeddi Inaccessible embedding provider errors usually include a message stating Meilisearch "could not reach embedding server". -## Remote federated search errors - -### `remote_bad_response` +## `remote_bad_response` The remote instance answered with a response that this instance could not use as a federated search response. -### `remote_bad_request` +## `remote_bad_request` The remote instance answered with `400 BAD REQUEST`. -### `remote_could_not_send_request` +## `remote_could_not_send_request` There was an error while sending the remote federated search request. -### `remote_invalid_api_key` +## `remote_invalid_api_key` The remote instance answered with `403 FORBIDDEN` or `401 UNAUTHORIZED` to this instance’s request. The configured search API key is either missing, invalid, or lacks the required search permission. -### `remote_remote_error` +## `remote_remote_error` The remote instance answered with `500 INTERNAL ERROR`. -### `remote_timeout` +## `remote_timeout` The proxy did not answer in the allocated time. -### `webhook_not_found` +## `webhook_not_found` The provided webhook `uuid` does not correspond to any configured webhooks in the instance. diff --git a/reference/errors/overview.mdx b/reference/errors/overview.mdx index f7c3288c5a..78e7e61aac 100644 --- a/reference/errors/overview.mdx +++ b/reference/errors/overview.mdx @@ -20,7 +20,7 @@ Meilisearch uses the following standard HTTP codes for a successful or failed AP ## Errors -All detailed task responses contain an [`error`](/reference/api/tasks#error) field. When a task fails, it is always accompanied by a JSON-formatted error response. Meilisearch errors can be of one of the following types: +All detailed task responses contain an [`error`](/reference/api/async-task-management/get-task) field. When a task fails, it is always accompanied by a JSON-formatted error response. Meilisearch errors can be of one of the following types: | Type | Description | | :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 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); +});