> ## Documentation Index
> Fetch the complete documentation index at: https://algolia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Completion

> Create a completion for the specified agent.

<Callout icon="flask-conical" color="#14b8a6">
  This is a **beta feature** according to [Algolia's Terms of Service ("Beta Services")](https://www.algolia.com/policies/terms/).
</Callout>

This endpoint handles two types of requests:

1. Normal completion request: User message -> Agent response
2. Tool approval response: User approval -> Execute tool -> Agent response

Tool Approval Flow (for MCP tools with requiresApproval: true):

* Request 1: User sends message -> Agent requests tool call -> Return approval request
* Request 2: User approves -> Execute tool -> Agent continues with result.

**Required ACL:** `search`


## OpenAPI

````yaml specs/agent-studio.yml post /1/agents/{agentId}/completions
openapi: 3.1.0
info:
  title: Agent Studio API
  description: >
    The Agent Studio API lets you build and operate generative AI agents that
    use Algolia data, tools, and your chosen LLM provider.


    Use it to create, configure, publish, and update agents, then generate chat
    completions grounded in live data from your Algolia indices. You can manage
    LLM providers, Agent Studio tools, conversations, feedback, secret keys,
    user data, caching, and application settings for your AI experiences.


    ## Client libraries


    Use Algolia's API clients and libraries to reliably integrate Algolia's APIs
    with your apps.


    For more information, see [Algolia's
    ecosystem](https://www.algolia.com/doc/libraries).


    ## Base URL


    Base URL for the Agent Studio API:


    - `https://{APPLICATION_ID}.algolia.net/agent-studio`


    **All requests must use HTTPS.**


    ## Authentication


    Add these headers to authenticate requests:


    - `x-algolia-application-id`. Your Algolia application ID.

    - `x-algolia-api-key`. An API key with the necessary permissions to make the
    request.
      The required access control list (ACL) to make a request is listed in each endpoint's reference.

    You can find your application ID and API key in the [Algolia
    dashboard](https://dashboard.algolia.com/account/api-keys).


    ## Request format


    Request bodies must be JSON objects.


    ## Response status and errors


    The Agent Studio API returns JSON responses. Since JSON doesn't guarantee
    any specific ordering, don't rely on the order of attributes in the API
    response.


    Successful responses return `2xx` statuses. Client errors return `4xx`
    statuses. Server errors return `5xx` statuses.

    Error responses have a `message` property with more information.


    ## Version


    The current version of the Agent Studio API is version 1, indicated by the
    `/1/` in each endpoint's URL.
  version: 0.1.0
servers:
  - url: https://{APPLICATION_ID}.algolia.net/agent-studio
    description: Agent Studio API.
    variables:
      APPLICATION_ID:
        default: EXAMPLE
        description: Your Algolia application ID.
security:
  - appId: []
    apiKey: []
tags:
  - name: Agents
    description: Manage your agents.
  - name: Allowed Domains
    description: Restrict where an agent's API key may be used.
  - name: Completions
    description: Generate completions.
  - name: Configurations
    description: Manage Agent Studio related application configurations.
  - name: Conversations
    description: View, export, and delete conversation history.
  - name: Feedback
    description: Capture user feedback on agent responses.
  - name: Internal
    description: Endpoints that are needed for internal or integration logic.
  - name: Providers
    description: Manage your LLM providers.
  - name: Secret Keys
    description: Manage secret keys used to authenticate requests.
  - name: User Data
    description: Manage end-user data associated with conversations.
paths:
  /1/agents/{agentId}/completions:
    post:
      tags:
        - Completions
        - Completions
      summary: Create Completion
      description: >-
        Create a completion for the specified agent.


        This endpoint handles two types of requests:

        1. Normal completion request: User message -> Agent response

        2. Tool approval response: User approval -> Execute tool -> Agent
        response


        Tool Approval Flow (for MCP tools with requiresApproval: true):

        - Request 1: User sends message -> Agent requests tool call -> Return
        approval request

        - Request 2: User approves -> Execute tool -> Agent continues with
        result.
      operationId: createAgentCompletion
      parameters:
        - name: agentId
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/AgentIdUnion'
          description: The agentId.
        - name: compatibilityMode
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/CompatibilityMode'
          description: Compatibility mode for the completion API.
        - name: analytics
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              Set to false to skip analytics for this completion (default:
              true). Disables Agent Studio BigQuery analytics, Algolia search
              analytics, click analytics, and query-suggestions training. Useful
              for offline-eval workflows.
            default: true
            title: analytics
          description: >-
            Set to false to skip analytics for this completion (default: true).
            Disables Agent Studio BigQuery analytics, Algolia search analytics,
            click analytics, and query-suggestions training. Useful for
            offline-eval workflows.
        - name: cache
          in: query
          required: false
          schema:
            type: boolean
            description: Use cached responses if available.
            default: true
            title: cache
          description: Use cached responses if available.
        - name: memory
          in: query
          required: false
          schema:
            oneOf:
              - const: false
                type: boolean
              - type: 'null'
            description: Set to false to disable memory (enabled by default).
            title: memory
          description: Set to false to disable memory (enabled by default).
        - name: stream
          in: query
          required: false
          schema:
            type: boolean
            description: Whether to stream the response or not.
            default: true
            title: stream
          description: Whether to stream the response or not.
        - name: X-Algolia-Secure-User-Token
          in: header
          required: false
          schema:
            oneOf:
              - type: string
              - type: 'null'
            title: x-Algolia-Secure-User-Token
          description: The X-Algolia-Secure-User-Token.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentCompletionRequest'
      responses:
        '200':
          description: Successful Response.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '422':
          description: Validation Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
        - lang: csharp
          label: C#
          source: |-
            // Initialize the client
            var client = new AgentStudioClient(
              new AgentStudioConfig("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
            );

            // Call the API
            var response = await client.CreateAgentCompletionAsync(
              "76710f1b-8231-42e5-b0d1-f43aac618e15",
              Enum.Parse<CompatibilityMode>("AiSdk4"),
              new AgentCompletionRequest
              {
                Messages = new MessagesUnion(
                  new List<MessageV4>
                  {
                    new MessageV4(new UserMessageV4 { Role = "user", Content = "Hello, how are you?" }),
                  }
                ),
              }
            );

            // print the response
            Console.WriteLine(response);
        - lang: dart
          label: Dart
          source: |-
            // Initialize the client
            final client = AgentStudioClient(
                appId: 'ALGOLIA_APPLICATION_ID', apiKey: 'ALGOLIA_API_KEY');

            // Call the API
            final response = await client.createAgentCompletion(
              agentId: "76710f1b-8231-42e5-b0d1-f43aac618e15",
              compatibilityMode: CompatibilityMode.fromJson("ai-sdk-4"),
              agentCompletionRequest: AgentCompletionRequest(
                messages: [
                  UserMessageV4(
                    role: "user",
                    content: "Hello, how are you?",
                  ),
                ],
              ),
            );

            // print the response
            print(response);
        - lang: go
          label: Go
          source: >-
            // Initialize the client

            client, err := agentStudio.NewClient("ALGOLIA_APPLICATION_ID",
            "ALGOLIA_API_KEY")

            if err != nil {
              // The client can fail to initialize if you pass an invalid parameter.
              panic(err)
            }


            // Call the API

            response, err :=
            client.CreateAgentCompletion(client.NewApiCreateAgentCompletionRequest(
              "76710f1b-8231-42e5-b0d1-f43aac618e15", agentStudio.CompatibilityMode("ai-sdk-4"),
              agentStudio.NewEmptyAgentCompletionRequest().SetMessages(agentStudio.ArrayOfMessageV4AsMessagesUnion(
                []agentStudio.MessageV4{*agentStudio.UserMessageV4AsMessageV4(
                  agentStudio.NewEmptyUserMessageV4().SetRole("user").SetContent("Hello, how are you?"))}))))
            if err != nil {
              // handle the eventual error
              panic(err)
            }



            // print the response

            print(response)
        - lang: java
          label: Java
          source: >-
            // Initialize the client

            AgentStudioClient client = new
            AgentStudioClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY");


            // Call the API

            Map response = client.createAgentCompletion(
              "76710f1b-8231-42e5-b0d1-f43aac618e15",
              CompatibilityMode.AI_SDK_4,
              new AgentCompletionRequest().setMessages(
                MessagesUnion.ofListOfMessageV4(Arrays.asList(new UserMessageV4().setRole("user").setContent("Hello, how are you?")))
              )
            );


            // print the response

            System.out.println(response);
        - lang: javascript
          label: JavaScript
          source: >-
            // Initialize the client

            const client = agentStudioClient('ALGOLIA_APPLICATION_ID',
            'ALGOLIA_API_KEY');


            // Call the API

            // Use the streaming variant to iterate over events

            for await (const event of client.createAgentCompletionStream({
              agentId: '76710f1b-8231-42e5-b0d1-f43aac618e15',
              compatibilityMode: 'ai-sdk-4',
              agentCompletionRequest: { messages: [{ role: 'user', content: 'Hello, how are you?' }] },
            })) {
              console.log(event.data);
            }
        - lang: kotlin
          label: Kotlin
          source: >-
            // Initialize the client

            val client = AgentStudioClient(appId = "ALGOLIA_APPLICATION_ID",
            apiKey = "ALGOLIA_API_KEY")


            // Call the API

            var response =
              client.createAgentCompletion(
                agentId = "76710f1b-8231-42e5-b0d1-f43aac618e15",
                compatibilityMode = CompatibilityMode.entries.first { it.value == "ai-sdk-4" },
                agentCompletionRequest =
                  AgentCompletionRequest(
                    messages =
                      MessagesUnion.ofListOfMessageV4(
                        listOf(UserMessageV4(role = "user", content = "Hello, how are you?"))
                      )
                  ),
              )


            // print the response

            println(response)
        - lang: php
          label: PHP
          source: >-
            // Initialize the client

            $client = AgentStudioClient::create('ALGOLIA_APPLICATION_ID',
            'ALGOLIA_API_KEY');


            // Call the API

            $response = $client->createAgentCompletion(
                '76710f1b-8231-42e5-b0d1-f43aac618e15',
                'ai-sdk-4',
                ['messages' => [
                    ['role' => 'user',
                        'content' => 'Hello, how are you?',
                    ],
                ],
                ],
            );



            // print the response

            var_dump($response);
        - lang: python
          label: Python
          source: >-
            # Initialize the client

            # In an asynchronous context, you can use AgentStudioClient instead,
            which exposes the exact same methods.

            client = AgentStudioClientSync("ALGOLIA_APPLICATION_ID",
            "ALGOLIA_API_KEY")


            # Call the API

            # Use the streaming variant to iterate over events

            for event in client.create_agent_completion_stream(
                agent_id="76710f1b-8231-42e5-b0d1-f43aac618e15",
                compatibility_mode="ai-sdk-4",
                agent_completion_request={
                    "messages": [
                        {
                            "role": "user",
                            "content": "Hello, how are you?",
                        },
                    ],
                },
            ):
                
                print(event.data)
        - lang: ruby
          label: Ruby
          source: >-
            # Initialize the client

            client = Algolia::AgentStudioClient.create("ALGOLIA_APPLICATION_ID",
            "ALGOLIA_API_KEY")


            # Call the API

            response = client.create_agent_completion(
              "76710f1b-8231-42e5-b0d1-f43aac618e15",
              "ai-sdk-4",
              Algolia::AgentStudio::AgentCompletionRequest.new(
                messages: [Algolia::AgentStudio::UserMessageV4.new(role: "user", content: "Hello, how are you?")]
              )
            )



            # print the response

            puts(response)
        - lang: scala
          label: Scala
          source: >-
            // Initialize the client

            val client = AgentStudioClient(appId = "ALGOLIA_APPLICATION_ID",
            apiKey = "ALGOLIA_API_KEY")


            // Call the API

            val response = Await.result(
              client.createAgentCompletion(
                agentId = "76710f1b-8231-42e5-b0d1-f43aac618e15",
                compatibilityMode = CompatibilityMode.withName("ai-sdk-4"),
                agentCompletionRequest = AgentCompletionRequest(
                  messages = Some(
                    MessagesUnion(
                      Seq(
                        UserMessageV4(
                          role = "user",
                          content = "Hello, how are you?"
                        )
                      )
                    )
                  )
                )
              ),
              Duration(100, "sec")
            )


            // print the response

            println(response)
        - lang: swift
          label: Swift
          source: >-
            // Initialize the client

            let client = try AgentStudioClient(appID: "ALGOLIA_APPLICATION_ID",
            apiKey: "ALGOLIA_API_KEY")


            // Call the API

            let response = try await client.createAgentCompletion(
                agentId: "76710f1b-8231-42e5-b0d1-f43aac618e15",
                compatibilityMode: CompatibilityMode.aiSdk4,
                agentCompletionRequest: AgentCompletionRequest(messages: MessagesUnion
                    .arrayOfMessageV4([MessageV4.userMessageV4(UserMessageV4(
                        role: "user",
                        content: "Hello, how are you?"
                    ))]))
            )


            // print the response

            print(response)
        - lang: cURL
          label: curl
          source: |-
            curl --request POST \
              --url 'https://example.algolia.net/agent-studio/1/agents/lorem/completions?compatibilityMode=ai-sdk-4&stream=true&cache=true&memory=false&analytics=true' \
              --header 'accept: application/json' \
              --header 'content-type: application/json' \
              --header 'x-algolia-api-key: ALGOLIA_API_KEY' \
              --header 'x-algolia-application-id: ALGOLIA_APPLICATION_ID' \
              --header 'x-algolia-secure-user-token: lorem' \
              --data '
            {
              "configuration": {
                "id": "lorem",
                "providerId": "lorem",
                "model": "lorem",
                "instructions": "lorem",
                "systemPrompt": "lorem",
                "config": {},
                "tools": [
                  {
                    "name": "lorem",
                    "type": "client_side",
                    "description": "lorem",
                    "inputSchema": {
                      "type": "object",
                      "properties": {},
                      "required": [
                        "lorem"
                      ]
                    }
                  }
                ]
              },
              "messages": [
                {
                  "id": "lorem",
                  "role": "user",
                  "content": "lorem",
                  "parts": [
                    {
                      "type": "text",
                      "text": "lorem"
                    }
                  ],
                  "annotations": [
                    {}
                  ]
                }
              ],
              "id": "lorem",
              "algolia": {
                "mcpServers": {
                  "property1": {
                    "property1": {
                      "property1": "lorem",
                      "property2": "lorem"
                    },
                    "property2": {
                      "property1": "lorem",
                      "property2": "lorem"
                    }
                  },
                  "property2": {
                    "property1": {
                      "property1": "lorem",
                      "property2": "lorem"
                    },
                    "property2": {
                      "property1": "lorem",
                      "property2": "lorem"
                    }
                  }
                },
                "searchParameters": {
                  "property1": {
                    "filters": "lorem",
                    "attributesToRetrieve": [
                      "lorem"
                    ],
                    "restrictSearchableAttributes": [
                      "lorem"
                    ],
                    "distinct": true,
                    "userToken": "lorem",
                    "enablePersonalization": true,
                    "personalizationImpact": 42,
                    "optionalFilters": "lorem"
                  },
                  "property2": {
                    "filters": "lorem",
                    "attributesToRetrieve": [
                      "lorem"
                    ],
                    "restrictSearchableAttributes": [
                      "lorem"
                    ],
                    "distinct": true,
                    "userToken": "lorem",
                    "enablePersonalization": true,
                    "personalizationImpact": 42,
                    "optionalFilters": "lorem"
                  }
                }
              },
              "toolApprovals": {}
            }
            '
components:
  schemas:
    AgentIdUnion:
      oneOf:
        - type: string
        - const: test
          type: string
    CompatibilityMode:
      type: string
      enum:
        - ai-sdk-4
        - ai-sdk-5
      title: compatibilityMode
      description: Support Compatibility modes for the completion API.
    AgentCompletionRequest:
      properties:
        algolia:
          $ref: '#/components/schemas/AgentCompletionAlgoliaParams'
        configuration:
          $ref: '#/components/schemas/AgentTestConfiguration'
        id:
          type: string
          maxLength: 128
          title: id
          description: Optional conversation id.
        messages:
          $ref: '#/components/schemas/MessagesUnion'
        toolApprovals:
          type: object
          title: toolApprovals
          description: Approval decisions for pending tool calls keyed by toolCallId.
      type: object
      title: agentCompletionRequest
      description: Request model for creating a completion for an assistant.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: detail
      type: object
      title: hTTPValidationError
    AgentCompletionAlgoliaParams:
      properties:
        mcpServers:
          additionalProperties:
            additionalProperties:
              additionalProperties:
                type: string
              type: object
            type: object
          type: object
          title: mcpservers
        searchParameters:
          $ref: '#/components/schemas/SearchParametersOverridesMapNullable'
      type: object
      title: agentCompletionAlgoliaParams
    AgentTestConfiguration:
      properties:
        config:
          additionalProperties: true
          type: object
          title: config
        instructions:
          type: string
          title: instructions
        tools:
          items:
            $ref: '#/components/schemas/ToolConfigInput'
          type: array
          title: tools
        id:
          type: string
          title: id
        model:
          type: string
          title: model
        providerId:
          type: string
          title: providerid
        systemPrompt:
          type: string
          title: systemprompt
      type: object
      required:
        - instructions
        - config
        - tools
      title: agentTestConfiguration
      description: Dynamic configuration for testing agents.
    MessagesUnion:
      oneOf:
        - items:
            $ref: '#/components/schemas/MessageV4'
          type: array
        - items:
            $ref: '#/components/schemas/MessageV5'
          type: array
        - type: 'null'
    ValidationError:
      properties:
        loc:
          items:
            $ref: '#/components/schemas/LocationItemUnion'
          type: array
          title: location
        msg:
          type: string
          title: message
        type:
          type: string
          title: errorType
        ctx:
          type: object
          title: context
        input:
          title: input
      type: object
      required:
        - loc
        - msg
        - type
      title: validationError
    SearchParametersOverridesMapNullable:
      oneOf:
        - additionalProperties:
            $ref: '#/components/schemas/SearchParametersOverrides'
          type: object
        - type: 'null'
    ToolConfigInput:
      oneOf:
        - $ref: '#/components/schemas/ClientSideToolConfig'
        - $ref: '#/components/schemas/AlgoliaSearchToolConfig'
        - $ref: '#/components/schemas/AlgoliaRecommendToolConfig-Input'
        - $ref: '#/components/schemas/AlgoliaDisplayResultsToolConfig'
        - $ref: '#/components/schemas/McpServerToolConfig'
        - $ref: '#/components/schemas/UnknownToolConfig'
      discriminator:
        propertyName: type
        mapping:
          algolia_display_results:
            $ref: '#/components/schemas/AlgoliaDisplayResultsToolConfig'
          algolia_recommend:
            $ref: '#/components/schemas/AlgoliaRecommendToolConfig-Input'
          algolia_search_index:
            $ref: '#/components/schemas/AlgoliaSearchToolConfig'
          client_side:
            $ref: '#/components/schemas/ClientSideToolConfig'
          mcp_tools:
            $ref: '#/components/schemas/McpServerToolConfig'
          unknown:
            $ref: '#/components/schemas/UnknownToolConfig'
    MessageV4:
      oneOf:
        - $ref: '#/components/schemas/UserMessageV4'
        - $ref: '#/components/schemas/AssistantMessageV4'
      discriminator:
        propertyName: role
        mapping:
          assistant:
            $ref: '#/components/schemas/AssistantMessageV4'
          user:
            $ref: '#/components/schemas/UserMessageV4'
    MessageV5:
      oneOf:
        - $ref: '#/components/schemas/UserMessageV5'
        - $ref: '#/components/schemas/AssistantMessageV5'
      discriminator:
        propertyName: role
        mapping:
          assistant:
            $ref: '#/components/schemas/AssistantMessageV5'
          user:
            $ref: '#/components/schemas/UserMessageV5'
    LocationItemUnion:
      oneOf:
        - type: string
        - type: integer
    SearchParametersOverrides:
      properties:
        attributesToRetrieve:
          items:
            type: string
          type: array
          title: attributestoretrieve
        distinct:
          $ref: '#/components/schemas/DistinctUnion'
        enablePersonalization:
          type: boolean
          title: enablepersonalization
        filters:
          type: string
          title: filters
        optionalFilters:
          $ref: '#/components/schemas/OptionalFiltersUnion'
        personalizationImpact:
          type: integer
          title: personalizationimpact
        restrictSearchableAttributes:
          items:
            type: string
          type: array
          title: restrictsearchableattributes
        userToken:
          type: string
          title: usertoken
      additionalProperties: false
      type: object
      title: searchParametersOverrides
      description: >-
        Algolia Search API parameters that can be predefined for the search
        tool.

        Reference:
        https://www.algolia.com/doc/api-reference/search-api-parameters/


        A subset of SearchParameters of specific params we allow for runtime
        override.
    ClientSideToolConfig:
      properties:
        description:
          type: string
          maxLength: 200
          minLength: 1
          title: description
        inputSchema:
          $ref: '#/components/schemas/ClientToolsArgsSchema'
        name:
          type: string
          maxLength: 32
          minLength: 3
          title: name
        type:
          type: string
          const: client_side
          title: type
          default: client_side
      type: object
      required:
        - type
        - name
        - description
        - inputSchema
      title: clientSideToolConfig
    AlgoliaSearchToolConfig:
      properties:
        indices:
          items:
            $ref: '#/components/schemas/AlgoliaSearchToolIndexConfig'
          type: array
          title: indices
        name:
          type: string
          maxLength: 32
          minLength: 3
          title: name
        type:
          type: string
          const: algolia_search_index
          title: type
          default: algolia_search_index
      type: object
      required:
        - type
        - name
        - indices
      title: algoliaSearchToolConfig
    AlgoliaRecommendToolConfig-Input:
      properties:
        name:
          type: string
          maxLength: 32
          minLength: 3
          title: name
        type:
          type: string
          const: algolia_recommend
          title: type
          default: algolia_recommend
        allowedConfigs:
          items:
            $ref: '#/components/schemas/AlgoliaRecommendToolIndexConfig'
          type: array
          title: allowedconfigs
          default: []
        predefinedRecommendParameters:
          additionalProperties: true
          type: object
          title: predefinedrecommendparameters
      type: object
      required:
        - type
        - name
      title: algoliaRecommendToolConfig
      description: |-
        Configuration for the Algolia Recommend tool.
        Allows specifying recommend models and related parameters.
    AlgoliaDisplayResultsToolConfig:
      properties:
        type:
          type: string
          const: algolia_display_results
          title: type
          default: algolia_display_results
        maxGroups:
          type: integer
          minimum: 1
          title: maxgroups
          default: 3
        maxResultsPerGroup:
          type: integer
          minimum: 1
          title: maxresultspergroup
          default: 6
        minGroups:
          type: integer
          minimum: 1
          title: mingroups
          default: 1
        minResultsPerGroup:
          type: integer
          minimum: 1
          title: minresultspergroup
          default: 3
        name:
          type: string
          const: algolia_display_results
          title: name
          default: algolia_display_results
      type: object
      title: algoliaDisplayResultsToolConfig
      description: Configuration for the algolia_display_results tool.
      required:
        - type
    McpServerToolConfig:
      properties:
        headers:
          additionalProperties:
            type: string
          type: object
          title: headers
        name:
          type: string
          maxLength: 32
          minLength: 3
          title: name
        type:
          type: string
          const: mcp_tools
          title: type
          default: mcp_tools
        url:
          type: string
          maxLength: 512
          minLength: 1
          title: url
        allowedTools:
          $ref: '#/components/schemas/AllowedToolsUnion'
        id:
          oneOf:
            - type: string
            - type: 'null'
          title: id
          description: Stable unique identifier for this MCP tool.
        transport:
          type: string
          const: streamable_http
          title: transport
          default: streamable_http
      type: object
      required:
        - type
        - url
        - headers
        - name
      title: mcpServerToolConfig
    UnknownToolConfig:
      properties:
        name:
          type: string
          maxLength: 32
          minLength: 3
          title: name
        type:
          type: string
          const: unknown
          title: type
          default: unknown
      additionalProperties: true
      type: object
      required:
        - type
        - name
      title: unknownToolConfig
      description: >-
        Exists only to ensure that when you change branch from toolX to
        feat/toolY, your config stays valid.
    UserMessageV4:
      properties:
        content:
          type: string
          title: content
        role:
          type: string
          const: user
          title: role
          default: user
        annotations:
          items:
            type: object
            additionalProperties: true
          type: array
          title: annotations
        id:
          type: string
          title: id
        parts:
          items:
            $ref: '#/components/schemas/TextPartV4'
          type: array
          title: parts
      type: object
      required:
        - role
        - content
      title: userMessageV4
    AssistantMessageV4:
      properties:
        content:
          type: string
          title: content
        role:
          type: string
          const: assistant
          title: role
          default: assistant
        id:
          type: string
          title: id
        parts:
          items:
            $ref: '#/components/schemas/AssistantPartV4'
          type: array
          title: parts
        toolInvocations:
          $ref: '#/components/schemas/ToolInvocationsUnion'
      type: object
      required:
        - role
        - content
      title: assistantMessageV4
    UserMessageV5:
      properties:
        role:
          type: string
          const: user
          title: role
          default: user
        id:
          type: string
          title: id
        metadata:
          $ref: '#/components/schemas/UserMessageMetadataV5'
        parts:
          items:
            $ref: '#/components/schemas/TextPartV5'
          type: array
          title: parts
      type: object
      title: userMessageV5
      required:
        - role
    AssistantMessageV5:
      properties:
        role:
          type: string
          const: assistant
          title: role
          default: assistant
        id:
          type: string
          title: id
        parts:
          items:
            $ref: '#/components/schemas/AssistantPartV5'
          type: array
          title: parts
      type: object
      title: assistantMessageV5
      required:
        - role
    DistinctUnion:
      oneOf:
        - type: boolean
        - type: integer
        - type: 'null'
    OptionalFiltersUnion:
      oneOf:
        - type: string
        - type: array
          items:
            $ref: '#/components/schemas/OptionalFiltersUnion'
        - type: 'null'
    ClientToolsArgsSchema:
      properties:
        properties:
          additionalProperties: true
          type: object
          title: properties
        required:
          items:
            type: string
          type: array
          title: required
        type:
          type: string
          const: object
          title: type
          default: object
      type: object
      title: clientToolsArgsSchema
    AlgoliaSearchToolIndexConfig:
      properties:
        description:
          type: string
          maxLength: 3000
          minLength: 1
          title: description
        index:
          type: string
          maxLength: 100
          minLength: 1
          title: index
        enhancedDescription:
          type: string
          title: enhanceddescription
          default: ''
        searchControls:
          oneOf:
            - $ref: '#/components/schemas/IndexSearchParameters'
            - type: 'null'
        searchParameters:
          oneOf:
            - $ref: '#/components/schemas/SearchParameters'
            - type: 'null'
      type: object
      required:
        - index
        - description
      title: algoliaSearchToolIndexConfig
    AlgoliaRecommendToolIndexConfig:
      properties:
        index:
          type: string
          maxLength: 100
          minLength: 1
          title: index
        modelName:
          type: string
          maxLength: 100
          minLength: 1
          title: modelname
        description:
          type: string
          title: description
          default: ''
      type: object
      required:
        - index
        - modelName
      title: algoliaRecommendToolIndexConfig
    AllowedToolsUnion:
      oneOf:
        - additionalProperties:
            $ref: '#/components/schemas/ToolConfig'
          type: object
        - type: 'null'
    TextPartV4:
      properties:
        text:
          type: string
          title: text
        type:
          type: string
          const: text
          title: type
          default: text
      type: object
      required:
        - text
      title: textPartV4
    AssistantPartV4:
      oneOf:
        - $ref: '#/components/schemas/StepStartPartV4'
        - $ref: '#/components/schemas/ReasoningPartV4'
        - $ref: '#/components/schemas/TextPartV4'
        - $ref: '#/components/schemas/ToolInvocationPartV4'
    ToolInvocationsUnion:
      oneOf:
        - items:
            $ref: '#/components/schemas/ToolInvocationV4'
          type: array
        - type: 'null'
    UserMessageMetadataV5:
      properties:
        turnContext:
          additionalProperties: true
          type: object
          title: turncontext
      additionalProperties: true
      type: object
      title: userMessageMetadataV5
      description: >-
        Client-supplied metadata on a v5 user message.


        `turn_context` is namespaced so other callers can use `metadata` for
        unrelated

        purposes without collision. Unknown keys are preserved and ignored by
        this pipeline.


        Note: `turn_context` is deliberately typed `dict[str, Any]` (not
        `TurnContext`).

        The metadata is parsed eagerly with the request body, but cap/charset
        validation

        must be deferred to `extract_turn_context_v5` so the kill-switch

        (`TURN_CONTEXT_ENABLED=false`) can silently drop payloads instead of
        422-ing.

        See `test_invalid_metadata_does_not_raise_at_model_construction`.
    TextPartV5:
      properties:
        text:
          type: string
          title: text
        type:
          type: string
          const: text
          title: type
          default: text
      type: object
      required:
        - text
      title: textPartV5
    AssistantPartV5:
      oneOf:
        - $ref: '#/components/schemas/StepStartPartV5'
        - $ref: '#/components/schemas/TextPartV5'
        - $ref: '#/components/schemas/ReasoningPartV5'
        - $ref: '#/components/schemas/ToolPartV5'
    IndexSearchParameters:
      properties:
        attributesToRetrieve:
          $ref: '#/components/schemas/StringArrayParam'
        custom:
          oneOf:
            - type: object
              additionalProperties: true
            - type: 'null'
          title: custom
        facets:
          oneOf:
            - $ref: '#/components/schemas/FacetsParam'
            - type: 'null'
        hitsPerPage:
          $ref: '#/components/schemas/NumberParam'
        page:
          $ref: '#/components/schemas/NumberParam'
        query:
          oneOf:
            - $ref: '#/components/schemas/TextParam'
            - type: 'null'
        responseFields:
          $ref: '#/components/schemas/StringArrayParam'
      type: object
      title: indexSearchParameters
      description: >-
        Structured search parameters configuration for an Algolia index.


        Each parameter controls whether it is exposed to the LLM, its default
        value,

        optional constraints, and merge behavior.
    SearchParameters:
      properties:
        advancedSyntax:
          oneOf:
            - type: boolean
            - type: 'null'
          title: advancedsyntax
        advancedSyntaxFeatures:
          $ref: '#/components/schemas/AdvancedSyntaxFeaturesUnion'
        allowTyposOnNumericTokens:
          oneOf:
            - type: boolean
            - type: 'null'
          title: allowtyposonnumerictokens
        alternativesAsExact:
          $ref: '#/components/schemas/AlternativesAsExactUnion'
        analytics:
          oneOf:
            - type: boolean
            - type: 'null'
          title: analytics
        analyticsTags:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: analyticstags
        aroundLatLng:
          oneOf:
            - type: string
            - type: 'null'
          title: aroundlatlng
        aroundLatLngViaIp:
          oneOf:
            - type: boolean
            - type: 'null'
          title: aroundlatlngviaip
        aroundPrecision:
          $ref: '#/components/schemas/AroundPrecisionUnion'
        aroundRadius:
          $ref: '#/components/schemas/AroundRadiusUnion'
        attributeCriteriaComputedByMinProximity:
          oneOf:
            - type: boolean
            - type: 'null'
          title: attributecriteriacomputedbyminproximity
        attributesToRetrieve:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: attributestoretrieve
        attributesToSnippet:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: attributestosnippet
        clickAnalytics:
          oneOf:
            - type: boolean
            - type: 'null'
          title: clickanalytics
        decompoundQuery:
          oneOf:
            - type: boolean
            - type: 'null'
          title: decompoundquery
        disableExactOnAttributes:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: disableexactonattributes
        disableTypoToleranceOnAttributes:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: disabletypotoleranceonattributes
        distinct:
          $ref: '#/components/schemas/DistinctUnion'
        enableAbTest:
          oneOf:
            - type: boolean
            - type: 'null'
          title: enableabtest
        enablePersonalization:
          oneOf:
            - type: boolean
            - type: 'null'
          title: enablepersonalization
        enableReRanking:
          oneOf:
            - type: boolean
            - type: 'null'
          title: enablereranking
        enableRules:
          oneOf:
            - type: boolean
            - type: 'null'
          title: enablerules
        exactOnSingleWordQuery:
          oneOf:
            - $ref: '#/components/schemas/ExactOnSingleWordQuery'
            - type: 'null'
        explain:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: explain
        facetFilters:
          oneOf:
            - $ref: '#/components/schemas/FacetFiltersUnion'
            - type: 'null'
        facetingAfterDistinct:
          oneOf:
            - type: boolean
            - type: 'null'
          title: facetingafterdistinct
        facets:
          $ref: '#/components/schemas/FacetsUnion'
        filters:
          oneOf:
            - type: string
            - type: 'null'
          title: filters
        getRankingInfo:
          oneOf:
            - type: boolean
            - type: 'null'
          title: getrankinginfo
        hitsPerPage:
          oneOf:
            - type: integer
            - type: 'null'
          title: hitsperpage
        ignorePlurals:
          $ref: '#/components/schemas/IgnorePluralsUnion'
        insideBoundingBox:
          $ref: '#/components/schemas/InsideBoundingBoxUnion'
        insidePolygon:
          $ref: '#/components/schemas/InsidePolygonUnion'
        length:
          oneOf:
            - type: integer
            - type: 'null'
          title: length
        maxFacetHits:
          oneOf:
            - type: integer
            - type: 'null'
          title: maxfacethits
        maxValuesPerFacet:
          oneOf:
            - type: integer
            - type: 'null'
          title: maxvaluesperfacet
        minimumAroundRadius:
          oneOf:
            - type: integer
            - type: 'null'
          title: minimumaroundradius
        minProximity:
          oneOf:
            - type: integer
            - type: 'null'
          title: minproximity
        minWordSizeFor1Typo:
          oneOf:
            - type: integer
            - type: 'null'
          title: minwordsizefor1Typo
        minWordSizeFor2Typos:
          oneOf:
            - type: integer
            - type: 'null'
          title: minwordsizefor2Typos
        naturalLanguages:
          $ref: '#/components/schemas/NaturalLanguagesUnion'
        numericFilters:
          $ref: '#/components/schemas/NumericFiltersUnion'
        offset:
          oneOf:
            - type: integer
            - type: 'null'
          title: offset
        optionalFilters:
          $ref: '#/components/schemas/OptionalFiltersUnion'
        optionalWords:
          $ref: '#/components/schemas/OptionalWordsUnion'
        page:
          oneOf:
            - type: integer
            - type: 'null'
          title: page
        percentileComputation:
          oneOf:
            - type: boolean
            - type: 'null'
          title: percentilecomputation
        personalizationImpact:
          oneOf:
            - type: integer
            - type: 'null'
          title: personalizationimpact
        queryLanguages:
          $ref: '#/components/schemas/QueryLanguagesUnion'
        queryType:
          oneOf:
            - $ref: '#/components/schemas/QueryType'
            - type: 'null'
        relevancyStrictness:
          oneOf:
            - type: integer
            - type: 'null'
          title: relevancystrictness
        removeStopWords:
          $ref: '#/components/schemas/RemoveStopWordsUnion'
        removeWordsIfNoResults:
          oneOf:
            - $ref: '#/components/schemas/RemoveWordsIfNoResults'
            - type: 'null'
        replaceSynonymsInHighlight:
          oneOf:
            - type: boolean
            - type: 'null'
          title: replacesynonymsinhighlight
        reRankingApplyFilter:
          $ref: '#/components/schemas/ReRankingApplyFilterUnion'
        restrictHighlightAndSnippetArrays:
          oneOf:
            - type: boolean
            - type: 'null'
          title: restricthighlightandsnippetarrays
        restrictSearchableAttributes:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: restrictsearchableattributes
        ruleContexts:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: rulecontexts
        similarQuery:
          oneOf:
            - type: string
            - type: 'null'
          title: similarquery
        snippetEllipsisText:
          oneOf:
            - type: string
            - type: 'null'
          title: snippetellipsistext
        sortFacetValuesBy:
          oneOf:
            - type: string
            - type: 'null'
          title: sortfacetvaluesby
        sumOrFiltersScores:
          oneOf:
            - type: boolean
            - type: 'null'
          title: sumorfiltersscores
        synonyms:
          oneOf:
            - type: boolean
            - type: 'null'
          title: synonyms
        tagFilters:
          $ref: '#/components/schemas/TagFiltersUnion'
        typoTolerance:
          $ref: '#/components/schemas/TypoToleranceUnion'
        userToken:
          oneOf:
            - type: string
            - type: 'null'
          title: usertoken
      type: object
      title: searchParameters
      description: >-
        Algolia Search API parameters that can be predefined for the search
        tool.

        Reference:
        https://www.algolia.com/doc/api-reference/search-api-parameters/


        The parameters that seemed irrelevant for the search tool have been
        commented out.

        Uses types from algoliasearch.search.models for better type safety.
    ToolConfig:
      oneOf:
        - $ref: '#/components/schemas/McpToolConfig'
        - type: boolean
    StepStartPartV4:
      properties:
        type:
          type: string
          const: step-start
          title: type
          default: step-start
      type: object
      title: stepStartPartV4
    ReasoningPartV4:
      properties:
        reasoning:
          type: string
          title: reasoning
        type:
          type: string
          const: reasoning
          title: type
          default: reasoning
      type: object
      required:
        - reasoning
      title: reasoningPartV4
    ToolInvocationPartV4:
      properties:
        toolInvocation:
          $ref: '#/components/schemas/ToolInvocationV4'
        type:
          type: string
          const: tool-invocation
          title: type
          default: tool-invocation
      type: object
      required:
        - toolInvocation
      title: toolInvocationPartV4
    ToolInvocationV4:
      properties:
        toolCallId:
          type: string
          title: toolcallid
        toolName:
          type: string
          title: toolname
        args:
          additionalProperties: true
          type: object
          title: args
        argsHash:
          type: string
          title: argshash
        description:
          type: string
          title: description
        providerOptions:
          additionalProperties: true
          type: object
          title: provideroptions
        requiresApproval:
          type: boolean
          title: requiresapproval
        result:
          type: object
          additionalProperties: true
          title: result
        state:
          type: string
          title: state
        step:
          type: integer
          title: step
      type: object
      required:
        - toolCallId
        - toolName
      title: toolInvocationV4
      description: Model for tool invocation in a Message.
    StepStartPartV5:
      properties:
        type:
          type: string
          const: step-start
          title: type
          default: step-start
      type: object
      title: stepStartPartV5
    ReasoningPartV5:
      properties:
        text:
          type: string
          title: text
        type:
          type: string
          const: reasoning
          title: type
          default: reasoning
      type: object
      required:
        - text
      title: reasoningPartV5
    ToolPartV5:
      properties:
        toolCallId:
          type: string
          title: toolcallid
        type:
          type: string
          title: type
        argsHash:
          type: string
          title: argshash
        description:
          type: string
          title: description
        errorText:
          type: string
          title: errortext
        input:
          additionalProperties: true
          type: object
          title: input
        output:
          type: object
          additionalProperties: true
          title: output
        providerOptions:
          additionalProperties: true
          type: object
          title: provideroptions
        requiresApproval:
          type: boolean
          title: requiresapproval
        state:
          $ref: '#/components/schemas/ToolState'
      type: object
      required:
        - type
        - toolCallId
      title: toolPartV5
      description: Model for tool invocation in a Message.
    StringArrayParam:
      properties:
        exposed:
          type: boolean
          title: exposed
        constraint:
          oneOf:
            - $ref: '#/components/schemas/StringArrayParamConstraint'
            - type: 'null'
        default:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: default
        merge:
          oneOf:
            - type: boolean
            - type: 'null'
          title: merge
      type: object
      required:
        - exposed
      title: stringArrayParam
      description: >-
        A string array search parameter with exposure control, constraints, and
        merge behavior.
    FacetsParam:
      properties:
        default:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: default
        exposed:
          type: boolean
          const: false
          title: exposed
          default: false
      type: object
      title: facetsParam
      description: A facets parameter that is always hidden from the LLM.
    NumberParam:
      properties:
        exposed:
          type: boolean
          title: exposed
        constraint:
          oneOf:
            - $ref: '#/components/schemas/NumberParamConstraint'
            - type: 'null'
        default:
          oneOf:
            - type: integer
            - type: 'null'
          title: default
      type: object
      required:
        - exposed
      title: numberParam
      description: >-
        A number search parameter with exposure control and optional
        constraints.
    TextParam:
      properties:
        exposed:
          type: boolean
          title: exposed
        default:
          oneOf:
            - type: string
            - type: 'null'
          title: default
      type: object
      required:
        - exposed
      title: textParam
      description: A text search parameter with exposure control.
    AdvancedSyntaxFeaturesUnion:
      oneOf:
        - items:
            $ref: '#/components/schemas/AdvancedSyntaxFeatures'
          type: array
        - type: 'null'
    AlternativesAsExactUnion:
      oneOf:
        - items:
            $ref: '#/components/schemas/AlternativesAsExact'
          type: array
        - type: 'null'
    AroundPrecisionUnion:
      oneOf:
        - type: integer
        - items:
            additionalProperties:
              type: integer
            type: object
          type: array
        - type: 'null'
    AroundRadiusUnion:
      oneOf:
        - type: integer
        - type: string
        - type: 'null'
    ExactOnSingleWordQuery:
      type: string
      enum:
        - attribute
        - none
        - word
      title: exactOnSingleWordQuery
      description: >-
        Determines how the [Exact ranking
        criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes)
        is computed when the search query has only one word.  - `attribute`.  
        The Exact ranking criterion is 1 if the query word and attribute value
        are the same.   For example, a search for "road" will match the value
        "road", but not "road trip".  - `none`.   The Exact ranking criterion is
        ignored on single-word searches.  - `word`.   The Exact ranking
        criterion is 1 if the query word is found in the attribute value.   The
        query word must have at least 3 characters and must not be a stop
        word.   Only exact matches will be highlighted,   partial and prefix
        matches won't.
    FacetFiltersUnion:
      oneOf:
        - items:
            $ref: '#/components/schemas/FacetFiltersUnion'
          type: array
        - type: string
    FacetsUnion:
      oneOf:
        - items:
            type: string
          type: array
        - $ref: '#/components/schemas/Facets'
        - type: 'null'
    IgnorePluralsUnion:
      oneOf:
        - type: boolean
        - items:
            $ref: '#/components/schemas/SupportedLanguage'
          type: array
        - type: 'null'
    InsideBoundingBoxUnion:
      oneOf:
        - type: string
        - items:
            items:
              type: number
            type: array
          type: array
        - type: 'null'
    InsidePolygonUnion:
      oneOf:
        - type: string
        - items:
            items:
              type: number
            type: array
          type: array
        - type: 'null'
    NaturalLanguagesUnion:
      oneOf:
        - items:
            $ref: '#/components/schemas/SupportedLanguage'
          type: array
        - type: 'null'
    NumericFiltersUnion:
      oneOf:
        - type: string
        - type: array
          items:
            $ref: '#/components/schemas/NumericFiltersUnion'
        - type: 'null'
    OptionalWordsUnion:
      oneOf:
        - type: string
        - items:
            type: string
          type: array
        - type: 'null'
    QueryLanguagesUnion:
      oneOf:
        - items:
            $ref: '#/components/schemas/SupportedLanguage'
          type: array
        - type: 'null'
    QueryType:
      type: string
      enum:
        - prefixLast
        - prefixAll
        - prefixNone
      title: queryType
      description: >-
        Determines if and how query words are interpreted as prefixes.  By
        default, only the last query word is treated as a prefix (`prefixLast`).
        To turn off prefix search, use `prefixNone`. Avoid `prefixAll`, which
        treats all query words as prefixes. This might lead to counterintuitive
        results and makes your search slower.  For more information, see [Prefix
        searching](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/prefix-searching).
    RemoveStopWordsUnion:
      oneOf:
        - type: boolean
        - items:
            $ref: '#/components/schemas/SupportedLanguage'
          type: array
        - type: 'null'
    RemoveWordsIfNoResults:
      type: string
      enum:
        - none
        - lastWords
        - firstWords
        - allOptional
      title: removeWordsIfNoResults
      description: >-
        Strategy for removing words from the query when it doesn't return any
        results. This helps to avoid returning empty search results.  -
        `none`.   No words are removed when a query doesn't return results.  -
        `lastWords`.   Treat the last (then second to last, then third to last)
        word as optional,   until there are results or at most 5 words have been
        removed.  - `firstWords`.   Treat the first (then second, then third)
        word as optional,   until there are results or at most 5 words have been
        removed.  - `allOptional`.   Treat all words as optional.  For more
        information, see [Remove words to improve
        results](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/in-depth/why-use-remove-words-if-no-results).
    ReRankingApplyFilterUnion:
      oneOf:
        - type: string
        - items:
            type: object
            additionalProperties: true
          type: array
        - type: 'null'
    TagFiltersUnion:
      oneOf:
        - type: string
        - type: array
          items:
            $ref: '#/components/schemas/TagFiltersUnion'
        - type: 'null'
    TypoToleranceUnion:
      oneOf:
        - type: boolean
        - $ref: '#/components/schemas/TypoToleranceEnum'
        - type: 'null'
    McpToolConfig:
      properties:
        alias:
          oneOf:
            - type: string
              maxLength: 32
              minLength: 3
            - type: 'null'
          title: alias
        requiresApproval:
          oneOf:
            - type: boolean
            - type: 'null'
          title: requiresapproval
          default: false
      type: object
      title: mcpToolConfig
    ToolState:
      type: string
      enum:
        - input-streaming
        - input-available
        - output-available
        - output-error
    StringArrayParamConstraint:
      properties:
        values:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: values
      type: object
      title: stringArrayParamConstraint
      description: Constraints for a string array parameter.
    NumberParamConstraint:
      properties:
        max:
          oneOf:
            - type: integer
            - type: 'null'
          title: max
        min:
          oneOf:
            - type: integer
            - type: 'null'
          title: min
      type: object
      title: numberParamConstraint
      description: Constraints for a number parameter.
    AdvancedSyntaxFeatures:
      type: string
      enum:
        - exactPhrase
        - excludeWords
      title: advancedSyntaxFeatures
      description: AdvancedSyntaxFeatures.
    AlternativesAsExact:
      type: string
      enum:
        - ignorePlurals
        - singleWordSynonym
        - multiWordsSynonym
        - ignoreConjugations
      title: alternativesAsExact
      description: AlternativesAsExact.
    Facets:
      properties:
        order:
          oneOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: order
      additionalProperties: true
      type: object
      title: facets
      description: Order of facet names.
    SupportedLanguage:
      type: string
      enum:
        - af
        - ar
        - az
        - bg
        - bn
        - ca
        - cs
        - cy
        - da
        - de
        - el
        - en
        - eo
        - es
        - et
        - eu
        - fa
        - fi
        - fo
        - fr
        - ga
        - gl
        - he
        - hi
        - hu
        - hy
        - id
        - is
        - it
        - ja
        - ka
        - kk
        - ko
        - ku
        - ky
        - lt
        - lv
        - mi
        - mn
        - mr
        - ms
        - mt
        - nb
        - nl
        - 'no'
        - ns
        - pl
        - ps
        - pt
        - pt-br
        - qu
        - ro
        - ru
        - sk
        - sq
        - sv
        - sw
        - ta
        - te
        - th
        - tl
        - tn
        - tr
        - tt
        - uk
        - ur
        - uz
        - zh
      title: supportedLanguage
      description: ISO code for a supported language.
    TypoToleranceEnum:
      type: string
      enum:
        - min
        - strict
        - 'true'
        - 'false'
      title: typoToleranceEnum
      description: >-
        - `min`. Return matches with the lowest number of typos.   For example,
        if you have matches without typos, only include those.   But if there
        are no matches without typos (with 1 typo), include matches with 1 typo
        (2 typos). - `strict`. Return matches with the two lowest numbers of
        typos.   With `strict`, the Typo ranking criterion is applied first in
        the `ranking` setting.
  securitySchemes:
    appId:
      type: apiKey
      in: header
      name: x-algolia-application-id
      description: Your Algolia application ID.
    apiKey:
      type: apiKey
      in: header
      name: x-algolia-api-key
      description: >
        Your Algolia API key with the necessary permissions to make the request.

        Permissions are controlled through access control lists (ACL) and access
        restrictions.

        The required ACL to make a request is listed in each endpoint's
        reference.

````