# Models

## The ErrorMessage object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ErrorMessage":{"type":"object","properties":{"code":{"type":"integer"},"type":{"type":"string"},"message":{"type":"string"},"moreInfo":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"type":{"type":"string"},"message":{"type":"string"},"moreInfo":{"type":"string"}}}}},"description":""}}}}
```

## The ErrorMessageFault object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ErrorMessageFault":{"type":"object","properties":{"fault":{"type":"object","properties":{"faultstring":{"type":"string"},"detail":{"type":"object","properties":{"errorcode":{"type":"string"}}}}}}}}}}
```

## The AgenticRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgenticRequest":{"type":"object","properties":{"agentId":{"type":"string","description":"Unique identifier of the agent."},"message":{"type":"string","description":"The user message to the agent."}},"required":["agentId","message"]}}}}
```

## The AgentType object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentType":{"type":"string","description":"Type of the agent handling the request.","enum":["support","generic","complaint","anti_fraud"]}}}}
```

## The TextGenerationRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"TextGenerationRequest":{"title":"TextGenerationRequest","type":"object","description":"Represents a request body for a text generation operation.","required":["prompt"],"properties":{"id":{"type":"string","description":"Identifier of the request. The value is not mandatory - if provided, the ID is returned in the text generation response."},"prompt":{"type":"string","description":"A prompt to AI engine. A desired text content is generated based on the prompt."},"maxTokens":{"type":"integer","description":"Maximum number of tokens that should be used during text generation. If not provided, then 4097 is used."}}}}}}
```

## The IdResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"IdResponse":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the resource."}}}}}}
```

## The InnerTokenRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]}}}}
```

## The InnerTokenResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}}}}}
```

## The ExpandedTokenResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The ExpandableTokenResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The NativeToolType object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"NativeToolType":{"type":"string","enum":["slack","rag_custom","rag_emporix"],"description":"Type of the native tool."}}}}
```

## The BaseNativeTool object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"BaseNativeTool":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/NativeToolType"},"name":{"type":"string","description":"Name of the tool."},"enabled":{"type":"boolean","description":"An indicator whether the tool is enabled.","default":false}},"required":["type","name"]},"NativeToolType":{"type":"string","enum":["slack","rag_custom","rag_emporix"],"description":"Type of the native tool."}}}}
```

## The RagCustomEmbeddingNativeToolConfig object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomEmbeddingNativeToolConfig":{"type":"object","properties":{"model":{"type":"string","description":"Name of the OpenAI LLM model which should be used to create embedding of user's input in order to perform search operation."}},"required":["model"]}}}}
```

## The RagCustomEmbeddingNativeToolConfigRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomEmbeddingNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"RagCustomEmbeddingNativeToolConfig":{"type":"object","properties":{"model":{"type":"string","description":"Name of the OpenAI LLM model which should be used to create embedding of user's input in order to perform search operation."}},"required":["model"]},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]}}}}
```

## The RagCustomEmbeddingNativeToolConfigResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomEmbeddingNativeToolConfig":{"type":"object","properties":{"model":{"type":"string","description":"Name of the OpenAI LLM model which should be used to create embedding of user's input in order to perform search operation."}},"required":["model"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The RagCustomDatabaseType object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomDatabaseType":{"type":"string","enum":["qdrant"],"description":"Type of the database."}}}}
```

## The RagEntityType object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."}}}}
```

## The RagCustomDatabaseNativeToolConfig object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomDatabaseNativeToolConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the database."},"type":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseType"}]},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"collectionName":{"type":"string","description":"Name of the database collection."}},"required":["url","type","entityType","collectionName"]},"RagCustomDatabaseType":{"type":"string","enum":["qdrant"],"description":"Type of the database."},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."}}}}
```

## The RagCustomDatabaseNativeToolConfigRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomDatabaseNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"RagCustomDatabaseNativeToolConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the database."},"type":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseType"}]},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"collectionName":{"type":"string","description":"Name of the database collection."}},"required":["url","type","entityType","collectionName"]},"RagCustomDatabaseType":{"type":"string","enum":["qdrant"],"description":"Type of the database."},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]}}}}
```

## The RagCustomDatabaseNativeToolConfigResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomDatabaseNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomDatabaseNativeToolConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the database."},"type":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseType"}]},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"collectionName":{"type":"string","description":"Name of the database collection."}},"required":["url","type","entityType","collectionName"]},"RagCustomDatabaseType":{"type":"string","enum":["qdrant"],"description":"Type of the database."},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The RagCustomNativeToolConfig object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"maxResults":{"type":"integer","default":5,"description":"The maximum number of results found in the Vector Database."}},"required":["prompt"]}}}}
```

## The RagCustomNativeToolConfigRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/RagCustomNativeToolConfig"},{"type":"object","properties":{"databaseConfig":{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfigRequest"},"embeddingConfig":{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfigRequest"}},"required":["databaseConfig","embeddingConfig"]}]},"RagCustomNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"maxResults":{"type":"integer","default":5,"description":"The maximum number of results found in the Vector Database."}},"required":["prompt"]},"RagCustomDatabaseNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"RagCustomDatabaseNativeToolConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the database."},"type":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseType"}]},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"collectionName":{"type":"string","description":"Name of the database collection."}},"required":["url","type","entityType","collectionName"]},"RagCustomDatabaseType":{"type":"string","enum":["qdrant"],"description":"Type of the database."},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]},"RagCustomEmbeddingNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"RagCustomEmbeddingNativeToolConfig":{"type":"object","properties":{"model":{"type":"string","description":"Name of the OpenAI LLM model which should be used to create embedding of user's input in order to perform search operation."}},"required":["model"]}}}}
```

## The RagCustomNativeToolConfigResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomNativeToolConfig"},{"type":"object","properties":{"databaseConfig":{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfigResponse"},"embeddingConfig":{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfigResponse"}}}]},"RagCustomNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"maxResults":{"type":"integer","default":5,"description":"The maximum number of results found in the Vector Database."}},"required":["prompt"]},"RagCustomDatabaseNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomDatabaseNativeToolConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the database."},"type":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseType"}]},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"collectionName":{"type":"string","description":"Name of the database collection."}},"required":["url","type","entityType","collectionName"]},"RagCustomDatabaseType":{"type":"string","enum":["qdrant"],"description":"Type of the database."},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]},"RagCustomEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomEmbeddingNativeToolConfig":{"type":"object","properties":{"model":{"type":"string","description":"Name of the OpenAI LLM model which should be used to create embedding of user's input in order to perform search operation."}},"required":["model"]}}}}
```

## The RagLlmProvider object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]}}}}
```

## The EmporixOpenAiRagEmporixEmbeddingNativeToolConfig object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"EmporixOpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."}},"required":["provider"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]}}}}
```

## The OpenAiRagEmporixEmbeddingNativeToolConfig object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"OpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."},"model":{"type":"string","description":"OpenAI LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096}},"required":["provider","model","dimensions"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]}}}}
```

## The OpenAiRagEmporixEmbeddingNativeToolConfigRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"OpenAiRagEmporixEmbeddingNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"OpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."},"model":{"type":"string","description":"OpenAI LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096}},"required":["provider","model","dimensions"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]}}}}
```

## The OpenAiRagEmporixEmbeddingNativeToolConfigResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"OpenAiRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"OpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."},"model":{"type":"string","description":"OpenAI LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096}},"required":["provider","model","dimensions"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'self_hosted_ollama'."},"model":{"type":"string","description":"Ollama LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096},"url":{"type":"string","description":"Base URL where Ollama is hosted."}},"required":["provider","model","dimensions","url"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]}}}}
```

## The SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'self_hosted_ollama'."},"model":{"type":"string","description":"Ollama LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096},"url":{"type":"string","description":"Base URL where Ollama is hosted."}},"required":["provider","model","dimensions","url"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]}}}}
```

## The SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'self_hosted_ollama'."},"model":{"type":"string","description":"Ollama LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096},"url":{"type":"string","description":"Base URL where Ollama is hosted."}},"required":["provider","model","dimensions","url"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The RagEmporixNativeToolConfig object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagEmporixNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"indexedFields":{"type":"array","description":"This field specifies the fields of the given entityType that are used for generating embeddings. The provided values are then concatenated and converted to embeddings.","items":{"type":"object","properties":{"name":{"type":"string","description":"It can act as an alias for the field key. For example, if the 'name.en' key is provided then its alias could be 'English Name' and that value is used in embedding input."},"key":{"type":"string","description":"Unique value representing the entityType key."}},"required":["key"]}}},"required":["prompt","entityType","indexedFields"]},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."}}}}
```

## The RagEmporixNativeToolConfigRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagEmporixNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/RagEmporixNativeToolConfig"},{"type":"object","properties":{"embeddingConfig":{"oneOf":[{"$ref":"#/components/schemas/EmporixOpenAiRagEmporixEmbeddingNativeToolConfig"},{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfigRequest"},{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigRequest"}]}},"required":["embeddingConfig"]}]},"RagEmporixNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"indexedFields":{"type":"array","description":"This field specifies the fields of the given entityType that are used for generating embeddings. The provided values are then concatenated and converted to embeddings.","items":{"type":"object","properties":{"name":{"type":"string","description":"It can act as an alias for the field key. For example, if the 'name.en' key is provided then its alias could be 'English Name' and that value is used in embedding input."},"key":{"type":"string","description":"Unique value representing the entityType key."}},"required":["key"]}}},"required":["prompt","entityType","indexedFields"]},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"EmporixOpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."}},"required":["provider"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]},"OpenAiRagEmporixEmbeddingNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"OpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."},"model":{"type":"string","description":"OpenAI LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096}},"required":["provider","model","dimensions"]},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'self_hosted_ollama'."},"model":{"type":"string","description":"Ollama LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096},"url":{"type":"string","description":"Base URL where Ollama is hosted."}},"required":["provider","model","dimensions","url"]}}}}
```

## The RagEmporixNativeToolConfigResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagEmporixNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagEmporixNativeToolConfig"},{"type":"object","properties":{"embeddingConfig":{"oneOf":[{"$ref":"#/components/schemas/EmporixOpenAiRagEmporixEmbeddingNativeToolConfig"},{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfigResponse"},{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse"}]}}}]},"RagEmporixNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"indexedFields":{"type":"array","description":"This field specifies the fields of the given entityType that are used for generating embeddings. The provided values are then concatenated and converted to embeddings.","items":{"type":"object","properties":{"name":{"type":"string","description":"It can act as an alias for the field key. For example, if the 'name.en' key is provided then its alias could be 'English Name' and that value is used in embedding input."},"key":{"type":"string","description":"Unique value representing the entityType key."}},"required":["key"]}}},"required":["prompt","entityType","indexedFields"]},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"EmporixOpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."}},"required":["provider"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]},"OpenAiRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"OpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."},"model":{"type":"string","description":"OpenAI LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096}},"required":["provider","model","dimensions"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'self_hosted_ollama'."},"model":{"type":"string","description":"Ollama LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096},"url":{"type":"string","description":"Base URL where Ollama is hosted."}},"required":["provider","model","dimensions","url"]}}}}
```

## The SlackNativeToolConfigResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SlackNativeToolConfigResponse":{"type":"object","properties":{"teamId":{"type":"string","description":"Unique identifier of the Slack workspace (team) associated with the request. Used to distinguish the source Slack environment when handling events or API calls."}},"required":["teamId"]}}}}
```

## The SlackNativeToolConfigRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SlackNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/SlackNativeToolConfigResponse"},{"type":"object","properties":{"botToken":{"type":"string","description":"OAuth token used to authenticate the Slack bot within the specified workspace. Required for performing authorized actions on behalf of the bot. Format usually starts with `xoxb-...`. It is required only for creation, for update operation it can be omitted."}},"required":["botToken"]}]},"SlackNativeToolConfigResponse":{"type":"object","properties":{"teamId":{"type":"string","description":"Unique identifier of the Slack workspace (team) associated with the request. Used to distinguish the source Slack environment when handling events or API calls."}},"required":["teamId"]}}}}
```

## The SlackNativeToolRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SlackNativeToolRequest":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"type":{"description":"For SlackNativeTool it has to be set to `slack`."},"config":{"$ref":"#/components/schemas/SlackNativeToolConfigRequest"},"metadata":{"$ref":"#/components/schemas/MetadataRequest"}},"required":["config"]}]},"BaseNativeTool":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/NativeToolType"},"name":{"type":"string","description":"Name of the tool."},"enabled":{"type":"boolean","description":"An indicator whether the tool is enabled.","default":false}},"required":["type","name"]},"NativeToolType":{"type":"string","enum":["slack","rag_custom","rag_emporix"],"description":"Type of the native tool."},"SlackNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/SlackNativeToolConfigResponse"},{"type":"object","properties":{"botToken":{"type":"string","description":"OAuth token used to authenticate the Slack bot within the specified workspace. Required for performing authorized actions on behalf of the bot. Format usually starts with `xoxb-...`. It is required only for creation, for update operation it can be omitted."}},"required":["botToken"]}]},"SlackNativeToolConfigResponse":{"type":"object","properties":{"teamId":{"type":"string","description":"Unique identifier of the Slack workspace (team) associated with the request. Used to distinguish the source Slack environment when handling events or API calls."}},"required":["teamId"]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The SlackNativeToolResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SlackNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For SlackNativeTool it has to be set to `slack`."},"config":{"$ref":"#/components/schemas/SlackNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseNativeTool":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/NativeToolType"},"name":{"type":"string","description":"Name of the tool."},"enabled":{"type":"boolean","description":"An indicator whether the tool is enabled.","default":false}},"required":["type","name"]},"NativeToolType":{"type":"string","enum":["slack","rag_custom","rag_emporix"],"description":"Type of the native tool."},"SlackNativeToolConfigResponse":{"type":"object","properties":{"teamId":{"type":"string","description":"Unique identifier of the Slack workspace (team) associated with the request. Used to distinguish the source Slack environment when handling events or API calls."}},"required":["teamId"]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The RagCustomNativeToolRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomNativeToolRequest":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"type":{"description":"For `RagCustomNativeTool`, it has to be set to `rag_custom`."},"config":{"$ref":"#/components/schemas/RagCustomNativeToolConfigRequest"},"metadata":{"$ref":"#/components/schemas/MetadataRequest"}},"required":["config"]}]},"BaseNativeTool":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/NativeToolType"},"name":{"type":"string","description":"Name of the tool."},"enabled":{"type":"boolean","description":"An indicator whether the tool is enabled.","default":false}},"required":["type","name"]},"NativeToolType":{"type":"string","enum":["slack","rag_custom","rag_emporix"],"description":"Type of the native tool."},"RagCustomNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/RagCustomNativeToolConfig"},{"type":"object","properties":{"databaseConfig":{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfigRequest"},"embeddingConfig":{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfigRequest"}},"required":["databaseConfig","embeddingConfig"]}]},"RagCustomNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"maxResults":{"type":"integer","default":5,"description":"The maximum number of results found in the Vector Database."}},"required":["prompt"]},"RagCustomDatabaseNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"RagCustomDatabaseNativeToolConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the database."},"type":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseType"}]},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"collectionName":{"type":"string","description":"Name of the database collection."}},"required":["url","type","entityType","collectionName"]},"RagCustomDatabaseType":{"type":"string","enum":["qdrant"],"description":"Type of the database."},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]},"RagCustomEmbeddingNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"RagCustomEmbeddingNativeToolConfig":{"type":"object","properties":{"model":{"type":"string","description":"Name of the OpenAI LLM model which should be used to create embedding of user's input in order to perform search operation."}},"required":["model"]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The RagCustomNativeToolResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagCustomNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For `RagCustomNativeTool`, it has to be set to `rag_custom`."},"config":{"$ref":"#/components/schemas/RagCustomNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseNativeTool":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/NativeToolType"},"name":{"type":"string","description":"Name of the tool."},"enabled":{"type":"boolean","description":"An indicator whether the tool is enabled.","default":false}},"required":["type","name"]},"NativeToolType":{"type":"string","enum":["slack","rag_custom","rag_emporix"],"description":"Type of the native tool."},"RagCustomNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomNativeToolConfig"},{"type":"object","properties":{"databaseConfig":{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfigResponse"},"embeddingConfig":{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfigResponse"}}}]},"RagCustomNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"maxResults":{"type":"integer","default":5,"description":"The maximum number of results found in the Vector Database."}},"required":["prompt"]},"RagCustomDatabaseNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomDatabaseNativeToolConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the database."},"type":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseType"}]},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"collectionName":{"type":"string","description":"Name of the database collection."}},"required":["url","type","entityType","collectionName"]},"RagCustomDatabaseType":{"type":"string","enum":["qdrant"],"description":"Type of the database."},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]},"RagCustomEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomEmbeddingNativeToolConfig":{"type":"object","properties":{"model":{"type":"string","description":"Name of the OpenAI LLM model which should be used to create embedding of user's input in order to perform search operation."}},"required":["model"]}}}}
```

## The RagEmporixNativeToolRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagEmporixNativeToolRequest":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"type":{"description":"For `RagEmporixNativeTool`, it has to be set to `rag_emporix`."},"config":{"$ref":"#/components/schemas/RagEmporixNativeToolConfigRequest"},"metadata":{"$ref":"#/components/schemas/MetadataRequest"}},"required":["config"]}]},"BaseNativeTool":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/NativeToolType"},"name":{"type":"string","description":"Name of the tool."},"enabled":{"type":"boolean","description":"An indicator whether the tool is enabled.","default":false}},"required":["type","name"]},"NativeToolType":{"type":"string","enum":["slack","rag_custom","rag_emporix"],"description":"Type of the native tool."},"RagEmporixNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/RagEmporixNativeToolConfig"},{"type":"object","properties":{"embeddingConfig":{"oneOf":[{"$ref":"#/components/schemas/EmporixOpenAiRagEmporixEmbeddingNativeToolConfig"},{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfigRequest"},{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigRequest"}]}},"required":["embeddingConfig"]}]},"RagEmporixNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"indexedFields":{"type":"array","description":"This field specifies the fields of the given entityType that are used for generating embeddings. The provided values are then concatenated and converted to embeddings.","items":{"type":"object","properties":{"name":{"type":"string","description":"It can act as an alias for the field key. For example, if the 'name.en' key is provided then its alias could be 'English Name' and that value is used in embedding input."},"key":{"type":"string","description":"Unique value representing the entityType key."}},"required":["key"]}}},"required":["prompt","entityType","indexedFields"]},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"EmporixOpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."}},"required":["provider"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]},"OpenAiRagEmporixEmbeddingNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"OpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."},"model":{"type":"string","description":"OpenAI LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096}},"required":["provider","model","dimensions"]},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigRequest":{"allOf":[{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'self_hosted_ollama'."},"model":{"type":"string","description":"Ollama LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096},"url":{"type":"string","description":"Base URL where Ollama is hosted."}},"required":["provider","model","dimensions","url"]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The RagEmporixNativeToolResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"RagEmporixNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For `RagEmporixNativeTool`, it has to be set to `rag_emporix`."},"config":{"$ref":"#/components/schemas/RagEmporixNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseNativeTool":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/NativeToolType"},"name":{"type":"string","description":"Name of the tool."},"enabled":{"type":"boolean","description":"An indicator whether the tool is enabled.","default":false}},"required":["type","name"]},"NativeToolType":{"type":"string","enum":["slack","rag_custom","rag_emporix"],"description":"Type of the native tool."},"RagEmporixNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagEmporixNativeToolConfig"},{"type":"object","properties":{"embeddingConfig":{"oneOf":[{"$ref":"#/components/schemas/EmporixOpenAiRagEmporixEmbeddingNativeToolConfig"},{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfigResponse"},{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse"}]}}}]},"RagEmporixNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"indexedFields":{"type":"array","description":"This field specifies the fields of the given entityType that are used for generating embeddings. The provided values are then concatenated and converted to embeddings.","items":{"type":"object","properties":{"name":{"type":"string","description":"It can act as an alias for the field key. For example, if the 'name.en' key is provided then its alias could be 'English Name' and that value is used in embedding input."},"key":{"type":"string","description":"Unique value representing the entityType key."}},"required":["key"]}}},"required":["prompt","entityType","indexedFields"]},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"EmporixOpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."}},"required":["provider"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]},"OpenAiRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"OpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."},"model":{"type":"string","description":"OpenAI LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096}},"required":["provider","model","dimensions"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'self_hosted_ollama'."},"model":{"type":"string","description":"Ollama LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096},"url":{"type":"string","description":"Base URL where Ollama is hosted."}},"required":["provider","model","dimensions","url"]}}}}
```

## The NativeToolsResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"NativeToolsResponse":{"type":"array","description":"List of native tools which agents should have access to.","items":{"oneOf":[{"$ref":"#/components/schemas/SlackNativeToolResponse"},{"$ref":"#/components/schemas/RagCustomNativeToolResponse"},{"$ref":"#/components/schemas/RagEmporixNativeToolResponse"}]}},"SlackNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For SlackNativeTool it has to be set to `slack`."},"config":{"$ref":"#/components/schemas/SlackNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseNativeTool":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/NativeToolType"},"name":{"type":"string","description":"Name of the tool."},"enabled":{"type":"boolean","description":"An indicator whether the tool is enabled.","default":false}},"required":["type","name"]},"NativeToolType":{"type":"string","enum":["slack","rag_custom","rag_emporix"],"description":"Type of the native tool."},"SlackNativeToolConfigResponse":{"type":"object","properties":{"teamId":{"type":"string","description":"Unique identifier of the Slack workspace (team) associated with the request. Used to distinguish the source Slack environment when handling events or API calls."}},"required":["teamId"]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]},"RagCustomNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For `RagCustomNativeTool`, it has to be set to `rag_custom`."},"config":{"$ref":"#/components/schemas/RagCustomNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"RagCustomNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomNativeToolConfig"},{"type":"object","properties":{"databaseConfig":{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfigResponse"},"embeddingConfig":{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfigResponse"}}}]},"RagCustomNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"maxResults":{"type":"integer","default":5,"description":"The maximum number of results found in the Vector Database."}},"required":["prompt"]},"RagCustomDatabaseNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomDatabaseNativeToolConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the database."},"type":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseType"}]},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"collectionName":{"type":"string","description":"Name of the database collection."}},"required":["url","type","entityType","collectionName"]},"RagCustomDatabaseType":{"type":"string","enum":["qdrant"],"description":"Type of the database."},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"RagCustomEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomEmbeddingNativeToolConfig":{"type":"object","properties":{"model":{"type":"string","description":"Name of the OpenAI LLM model which should be used to create embedding of user's input in order to perform search operation."}},"required":["model"]},"RagEmporixNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For `RagEmporixNativeTool`, it has to be set to `rag_emporix`."},"config":{"$ref":"#/components/schemas/RagEmporixNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"RagEmporixNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagEmporixNativeToolConfig"},{"type":"object","properties":{"embeddingConfig":{"oneOf":[{"$ref":"#/components/schemas/EmporixOpenAiRagEmporixEmbeddingNativeToolConfig"},{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfigResponse"},{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse"}]}}}]},"RagEmporixNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"indexedFields":{"type":"array","description":"This field specifies the fields of the given entityType that are used for generating embeddings. The provided values are then concatenated and converted to embeddings.","items":{"type":"object","properties":{"name":{"type":"string","description":"It can act as an alias for the field key. For example, if the 'name.en' key is provided then its alias could be 'English Name' and that value is used in embedding input."},"key":{"type":"string","description":"Unique value representing the entityType key."}},"required":["key"]}}},"required":["prompt","entityType","indexedFields"]},"EmporixOpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."}},"required":["provider"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]},"OpenAiRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"OpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."},"model":{"type":"string","description":"OpenAI LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096}},"required":["provider","model","dimensions"]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'self_hosted_ollama'."},"model":{"type":"string","description":"Ollama LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096},"url":{"type":"string","description":"Base URL where Ollama is hosted."}},"required":["provider","model","dimensions","url"]}}}}
```

## The McpServerConfig object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"McpServerConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the MCP server."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization, e.g. `Authorization`."}},"required":["url"]}}}}
```

## The McpServerConfigRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"McpServerConfigRequest":{"allOf":[{"$ref":"#/components/schemas/McpServerConfig"},{"type":"object","properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/InnerTokenRequest"}}}]},"McpServerConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the MCP server."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization, e.g. `Authorization`."}},"required":["url"]},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]}}}}
```

## The McpServerConfigResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"McpServerConfigResponse":{"allOf":[{"$ref":"#/components/schemas/McpServerConfig"},{"type":"object","properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"McpServerConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the MCP server."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization, e.g. `Authorization`."}},"required":["url"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The BaseMcpServer object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"BaseMcpServer":{"type":"object","description":"An object representing customer's own implementation of the MCP server.","properties":{"name":{"type":"string","description":"Name of the MCP server."},"enabled":{"type":"boolean","description":"An indicator whether the MCP server is enabled.","default":false},"transport":{"$ref":"#/components/schemas/CustomMcpServerTransportType"}}},"CustomMcpServerTransportType":{"type":"string","enum":["streamable_http","sse"],"description":"Type of the communication between the agent and the MCP server. The `streamable_http` protocol is recommended, since the `sse` protocol is deprecated."}}}}
```

## The McpServerRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"McpServerRequest":{"allOf":[{"$ref":"#/components/schemas/BaseMcpServer"},{"type":"object","properties":{"config":{"$ref":"#/components/schemas/McpServerConfigRequest"},"metadata":{"$ref":"#/components/schemas/MetadataRequest"}},"required":["name","transport","config"]}]},"BaseMcpServer":{"type":"object","description":"An object representing customer's own implementation of the MCP server.","properties":{"name":{"type":"string","description":"Name of the MCP server."},"enabled":{"type":"boolean","description":"An indicator whether the MCP server is enabled.","default":false},"transport":{"$ref":"#/components/schemas/CustomMcpServerTransportType"}}},"CustomMcpServerTransportType":{"type":"string","enum":["streamable_http","sse"],"description":"Type of the communication between the agent and the MCP server. The `streamable_http` protocol is recommended, since the `sse` protocol is deprecated."},"McpServerConfigRequest":{"allOf":[{"$ref":"#/components/schemas/McpServerConfig"},{"type":"object","properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/InnerTokenRequest"}}}]},"McpServerConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the MCP server."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization, e.g. `Authorization`."}},"required":["url"]},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The McpServerResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"McpServerResponse":{"allOf":[{"$ref":"#/components/schemas/BaseMcpServer"},{"type":"object","properties":{"config":{"$ref":"#/components/schemas/McpServerConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseMcpServer":{"type":"object","description":"An object representing customer's own implementation of the MCP server.","properties":{"name":{"type":"string","description":"Name of the MCP server."},"enabled":{"type":"boolean","description":"An indicator whether the MCP server is enabled.","default":false},"transport":{"$ref":"#/components/schemas/CustomMcpServerTransportType"}}},"CustomMcpServerTransportType":{"type":"string","enum":["streamable_http","sse"],"description":"Type of the communication between the agent and the MCP server. The `streamable_http` protocol is recommended, since the `sse` protocol is deprecated."},"McpServerConfigResponse":{"allOf":[{"$ref":"#/components/schemas/McpServerConfig"},{"type":"object","properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"McpServerConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the MCP server."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization, e.g. `Authorization`."}},"required":["url"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The CommerceEventsResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"CommerceEventsResponse":{"type":"object","properties":{"events":{"type":"array","description":"List of events available to use by an agent with the `COMMERCE_EVENTS` trigger.","items":{"type":"string"}}}}}}}
```

## The McpServerType object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"McpServerType":{"type":"string","enum":["custom","predefined"],"description":"Type of the MCP server. The `custom` type allows you to integrate with your own MCP server instance, while the `predefined` type allows you to integrate with one of the instances provided by Emporix."}}}}
```

## The CustomMcpServerTransportType object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"CustomMcpServerTransportType":{"type":"string","enum":["streamable_http","sse"],"description":"Type of the communication between the agent and the MCP server. The `streamable_http` protocol is recommended, since the `sse` protocol is deprecated."}}}}
```

## The BaseAgentMcpServer object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"BaseAgentMcpServer":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/McpServerType"}},"required":["type"]},"McpServerType":{"type":"string","enum":["custom","predefined"],"description":"Type of the MCP server. The `custom` type allows you to integrate with your own MCP server instance, while the `predefined` type allows you to integrate with one of the instances provided by Emporix."}}}}
```

## The PredefinedAgentMcpServer object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"PredefinedAgentMcpServer":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For the `PredefinedMcpServer` it has to be set to `predefined`."},"domain":{"enum":["customer","extensibility","order","product","frontend"]},"tools":{"type":"array","description":"List of the tools which should be used by the agent from this particular MCP server.","items":{"type":"string"}}}}]},"BaseAgentMcpServer":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/McpServerType"}},"required":["type"]},"McpServerType":{"type":"string","enum":["custom","predefined"],"description":"Type of the MCP server. The `custom` type allows you to integrate with your own MCP server instance, while the `predefined` type allows you to integrate with one of the instances provided by Emporix."}}}}
```

## The CustomAgentMcpServerRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"CustomAgentMcpServerRequest":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For `CustomMcpServer` it has to be set to `custom`."},"mcpServer":{"type":"object","properties":{"id":{"type":"string","description":"ID of the MCP server."}},"required":["id"]}},"required":["mcpServer"]}]},"BaseAgentMcpServer":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/McpServerType"}},"required":["type"]},"McpServerType":{"type":"string","enum":["custom","predefined"],"description":"Type of the MCP server. The `custom` type allows you to integrate with your own MCP server instance, while the `predefined` type allows you to integrate with one of the instances provided by Emporix."}}}}
```

## The CustomAgentMcpServerResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"CustomAgentMcpServerResponse":{"allOf":[{"$ref":"#/components/schemas/CustomAgentMcpServerRequest"},{"type":"object","properties":{"mcpServer":{"allOf":[{"$ref":"#/components/schemas/McpServerResponse"},{"description":"The full response representing MCP server. If the `expand=mcpServer` is **not** used, then only `id` field is returned, otherwise all fields are returned."}]}}}]},"CustomAgentMcpServerRequest":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For `CustomMcpServer` it has to be set to `custom`."},"mcpServer":{"type":"object","properties":{"id":{"type":"string","description":"ID of the MCP server."}},"required":["id"]}},"required":["mcpServer"]}]},"BaseAgentMcpServer":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/McpServerType"}},"required":["type"]},"McpServerType":{"type":"string","enum":["custom","predefined"],"description":"Type of the MCP server. The `custom` type allows you to integrate with your own MCP server instance, while the `predefined` type allows you to integrate with one of the instances provided by Emporix."},"McpServerResponse":{"allOf":[{"$ref":"#/components/schemas/BaseMcpServer"},{"type":"object","properties":{"config":{"$ref":"#/components/schemas/McpServerConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseMcpServer":{"type":"object","description":"An object representing customer's own implementation of the MCP server.","properties":{"name":{"type":"string","description":"Name of the MCP server."},"enabled":{"type":"boolean","description":"An indicator whether the MCP server is enabled.","default":false},"transport":{"$ref":"#/components/schemas/CustomMcpServerTransportType"}}},"CustomMcpServerTransportType":{"type":"string","enum":["streamable_http","sse"],"description":"Type of the communication between the agent and the MCP server. The `streamable_http` protocol is recommended, since the `sse` protocol is deprecated."},"McpServerConfigResponse":{"allOf":[{"$ref":"#/components/schemas/McpServerConfig"},{"type":"object","properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"McpServerConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the MCP server."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization, e.g. `Authorization`."}},"required":["url"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The AgentMcpServersRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentMcpServersRequest":{"type":"array","description":"List of MCP servers which agents should have access to.","items":{"oneOf":[{"$ref":"#/components/schemas/CustomAgentMcpServerRequest"},{"$ref":"#/components/schemas/PredefinedAgentMcpServer"}]}},"CustomAgentMcpServerRequest":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For `CustomMcpServer` it has to be set to `custom`."},"mcpServer":{"type":"object","properties":{"id":{"type":"string","description":"ID of the MCP server."}},"required":["id"]}},"required":["mcpServer"]}]},"BaseAgentMcpServer":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/McpServerType"}},"required":["type"]},"McpServerType":{"type":"string","enum":["custom","predefined"],"description":"Type of the MCP server. The `custom` type allows you to integrate with your own MCP server instance, while the `predefined` type allows you to integrate with one of the instances provided by Emporix."},"PredefinedAgentMcpServer":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For the `PredefinedMcpServer` it has to be set to `predefined`."},"domain":{"enum":["customer","extensibility","order","product","frontend"]},"tools":{"type":"array","description":"List of the tools which should be used by the agent from this particular MCP server.","items":{"type":"string"}}}}]}}}}
```

## The AgentMcpServersResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentMcpServersResponse":{"type":"array","description":"List of MCP servers which agents should have access to.","items":{"oneOf":[{"$ref":"#/components/schemas/CustomAgentMcpServerResponse"},{"$ref":"#/components/schemas/PredefinedAgentMcpServer"}]}},"CustomAgentMcpServerResponse":{"allOf":[{"$ref":"#/components/schemas/CustomAgentMcpServerRequest"},{"type":"object","properties":{"mcpServer":{"allOf":[{"$ref":"#/components/schemas/McpServerResponse"},{"description":"The full response representing MCP server. If the `expand=mcpServer` is **not** used, then only `id` field is returned, otherwise all fields are returned."}]}}}]},"CustomAgentMcpServerRequest":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For `CustomMcpServer` it has to be set to `custom`."},"mcpServer":{"type":"object","properties":{"id":{"type":"string","description":"ID of the MCP server."}},"required":["id"]}},"required":["mcpServer"]}]},"BaseAgentMcpServer":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/McpServerType"}},"required":["type"]},"McpServerType":{"type":"string","enum":["custom","predefined"],"description":"Type of the MCP server. The `custom` type allows you to integrate with your own MCP server instance, while the `predefined` type allows you to integrate with one of the instances provided by Emporix."},"McpServerResponse":{"allOf":[{"$ref":"#/components/schemas/BaseMcpServer"},{"type":"object","properties":{"config":{"$ref":"#/components/schemas/McpServerConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseMcpServer":{"type":"object","description":"An object representing customer's own implementation of the MCP server.","properties":{"name":{"type":"string","description":"Name of the MCP server."},"enabled":{"type":"boolean","description":"An indicator whether the MCP server is enabled.","default":false},"transport":{"$ref":"#/components/schemas/CustomMcpServerTransportType"}}},"CustomMcpServerTransportType":{"type":"string","enum":["streamable_http","sse"],"description":"Type of the communication between the agent and the MCP server. The `streamable_http` protocol is recommended, since the `sse` protocol is deprecated."},"McpServerConfigResponse":{"allOf":[{"$ref":"#/components/schemas/McpServerConfig"},{"type":"object","properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"McpServerConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the MCP server."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization, e.g. `Authorization`."}},"required":["url"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]},"PredefinedAgentMcpServer":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For the `PredefinedMcpServer` it has to be set to `predefined`."},"domain":{"enum":["customer","extensibility","order","product","frontend"]},"tools":{"type":"array","description":"List of the tools which should be used by the agent from this particular MCP server.","items":{"type":"string"}}}}]}}}}
```

## The BaseLlm object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"BaseLlm":{"type":"object","properties":{"model":{"type":"string","description":"The exact name of the model."},"temperature":{"type":"number","format":"float","description":"Value between 0.1 and 1.0 (inclusive), in steps of 0.1. The lower value the more creative (but less stable) the model is.","enum":[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]},"maxTokens":{"type":"integer","description":"The limit of tokens which agent can burn during one request session."}},"required":["model","temperature","maxTokens"]}}}}
```

## The EmporixLlm object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"EmporixLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"type":"string","description":"Type of the LLM Provider. The `emporix_openai` allows using the OpenAI token provided by Emporix. The token usage is limited. When using this provider `apiKey` property can be omitted.","enum":["emporix_openai"]}},"required":["provider"]}]},"BaseLlm":{"type":"object","properties":{"model":{"type":"string","description":"The exact name of the model."},"temperature":{"type":"number","format":"float","description":"Value between 0.1 and 1.0 (inclusive), in steps of 0.1. The lower value the more creative (but less stable) the model is.","enum":[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]},"maxTokens":{"type":"integer","description":"The limit of tokens which agent can burn during one request session."}},"required":["model","temperature","maxTokens"]}}}}
```

## The SelfHostedParams object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SelfHostedParams":{"type":"object","properties":{"url":{"type":"string","description":"Url of the self-hosted LLM."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization e.g. `Authorization`."}},"required":["url"]}}}}
```

## The SelfHostedParamsRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SelfHostedParamsRequest":{"allOf":[{"$ref":"#/components/schemas/SelfHostedParams"},{"type":"object"},{"properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/InnerTokenRequest"}}}]},"SelfHostedParams":{"type":"object","properties":{"url":{"type":"string","description":"Url of the self-hosted LLM."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization e.g. `Authorization`."}},"required":["url"]},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]}}}}
```

## The SelfHostedParamsResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SelfHostedParamsResponse":{"allOf":[{"$ref":"#/components/schemas/SelfHostedParams"},{"type":"object","properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"SelfHostedParams":{"type":"object","properties":{"url":{"type":"string","description":"Url of the self-hosted LLM."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization e.g. `Authorization`."}},"required":["url"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The SelfHostedLlm object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SelfHostedLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"type":"string","description":"Type of the LLM Provider. The self-hosted LLM allows you to provide your own LLMs. When using this providers, the `selfHostedParams.url` property cannot be omitted.","enum":["self_hosted_ollama","self_hosted_vllm"]}},"required":["provider"]}]},"BaseLlm":{"type":"object","properties":{"model":{"type":"string","description":"The exact name of the model."},"temperature":{"type":"number","format":"float","description":"Value between 0.1 and 1.0 (inclusive), in steps of 0.1. The lower value the more creative (but less stable) the model is.","enum":[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]},"maxTokens":{"type":"integer","description":"The limit of tokens which agent can burn during one request session."}},"required":["model","temperature","maxTokens"]}}}}
```

## The SelfHostedLlmRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SelfHostedLlmRequest":{"allOf":[{"$ref":"#/components/schemas/SelfHostedLlm"},{"type":"object","properties":{"selfHostedParams":{"$ref":"#/components/schemas/SelfHostedParamsRequest"}},"required":["selfHostedParams"]}]},"SelfHostedLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"type":"string","description":"Type of the LLM Provider. The self-hosted LLM allows you to provide your own LLMs. When using this providers, the `selfHostedParams.url` property cannot be omitted.","enum":["self_hosted_ollama","self_hosted_vllm"]}},"required":["provider"]}]},"BaseLlm":{"type":"object","properties":{"model":{"type":"string","description":"The exact name of the model."},"temperature":{"type":"number","format":"float","description":"Value between 0.1 and 1.0 (inclusive), in steps of 0.1. The lower value the more creative (but less stable) the model is.","enum":[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]},"maxTokens":{"type":"integer","description":"The limit of tokens which agent can burn during one request session."}},"required":["model","temperature","maxTokens"]},"SelfHostedParamsRequest":{"allOf":[{"$ref":"#/components/schemas/SelfHostedParams"},{"type":"object"},{"properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/InnerTokenRequest"}}}]},"SelfHostedParams":{"type":"object","properties":{"url":{"type":"string","description":"Url of the self-hosted LLM."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization e.g. `Authorization`."}},"required":["url"]},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]}}}}
```

## The SelfHostedLlmResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"SelfHostedLlmResponse":{"allOf":[{"$ref":"#/components/schemas/SelfHostedLlm"},{"type":"object","properties":{"selfHostedParams":{"$ref":"#/components/schemas/SelfHostedParamsResponse"}}}]},"SelfHostedLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"type":"string","description":"Type of the LLM Provider. The self-hosted LLM allows you to provide your own LLMs. When using this providers, the `selfHostedParams.url` property cannot be omitted.","enum":["self_hosted_ollama","self_hosted_vllm"]}},"required":["provider"]}]},"BaseLlm":{"type":"object","properties":{"model":{"type":"string","description":"The exact name of the model."},"temperature":{"type":"number","format":"float","description":"Value between 0.1 and 1.0 (inclusive), in steps of 0.1. The lower value the more creative (but less stable) the model is.","enum":[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]},"maxTokens":{"type":"integer","description":"The limit of tokens which agent can burn during one request session."}},"required":["model","temperature","maxTokens"]},"SelfHostedParamsResponse":{"allOf":[{"$ref":"#/components/schemas/SelfHostedParams"},{"type":"object","properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"SelfHostedParams":{"type":"object","properties":{"url":{"type":"string","description":"Url of the self-hosted LLM."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization e.g. `Authorization`."}},"required":["url"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The ApiKeyLlmProvider object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ApiKeyLlmProvider":{"type":"string","description":"Type of the LLM Provider. The supported providers allows you to provide your own API key. When using this providers, the `apiKey` property cannot be omitted.","enum":["openai","google","anthropic"]}}}}
```

## The ApiKeyLlm object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ApiKeyLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"$ref":"#/components/schemas/ApiKeyLlmProvider"}},"required":["provider"]}]},"BaseLlm":{"type":"object","properties":{"model":{"type":"string","description":"The exact name of the model."},"temperature":{"type":"number","format":"float","description":"Value between 0.1 and 1.0 (inclusive), in steps of 0.1. The lower value the more creative (but less stable) the model is.","enum":[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]},"maxTokens":{"type":"integer","description":"The limit of tokens which agent can burn during one request session."}},"required":["model","temperature","maxTokens"]},"ApiKeyLlmProvider":{"type":"string","description":"Type of the LLM Provider. The supported providers allows you to provide your own API key. When using this providers, the `apiKey` property cannot be omitted.","enum":["openai","google","anthropic"]}}}}
```

## The ApiKeyLlmRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ApiKeyLlmRequest":{"allOf":[{"$ref":"#/components/schemas/ApiKeyLlm"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"ApiKeyLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"$ref":"#/components/schemas/ApiKeyLlmProvider"}},"required":["provider"]}]},"BaseLlm":{"type":"object","properties":{"model":{"type":"string","description":"The exact name of the model."},"temperature":{"type":"number","format":"float","description":"Value between 0.1 and 1.0 (inclusive), in steps of 0.1. The lower value the more creative (but less stable) the model is.","enum":[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]},"maxTokens":{"type":"integer","description":"The limit of tokens which agent can burn during one request session."}},"required":["model","temperature","maxTokens"]},"ApiKeyLlmProvider":{"type":"string","description":"Type of the LLM Provider. The supported providers allows you to provide your own API key. When using this providers, the `apiKey` property cannot be omitted.","enum":["openai","google","anthropic"]},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]}}}}
```

## The ApiKeyLlmResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ApiKeyLlmResponse":{"allOf":[{"$ref":"#/components/schemas/ApiKeyLlm"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"ApiKeyLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"$ref":"#/components/schemas/ApiKeyLlmProvider"}},"required":["provider"]}]},"BaseLlm":{"type":"object","properties":{"model":{"type":"string","description":"The exact name of the model."},"temperature":{"type":"number","format":"float","description":"Value between 0.1 and 1.0 (inclusive), in steps of 0.1. The lower value the more creative (but less stable) the model is.","enum":[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]},"maxTokens":{"type":"integer","description":"The limit of tokens which agent can burn during one request session."}},"required":["model","temperature","maxTokens"]},"ApiKeyLlmProvider":{"type":"string","description":"Type of the LLM Provider. The supported providers allows you to provide your own API key. When using this providers, the `apiKey` property cannot be omitted.","enum":["openai","google","anthropic"]},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The BaseToken object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"BaseToken":{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."}},"required":["name"]}}}}
```

## The TokenRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"TokenRequest":{"allOf":[{"$ref":"#/components/schemas/BaseToken"},{"type":"object","properties":{"value":{"type":"string","description":"Value which represents token."},"metadata":{"$ref":"#/components/schemas/MetadataRequest"}},"required":["value"]}]},"BaseToken":{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."}},"required":["name"]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The TokenResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"TokenResponse":{"allOf":[{"$ref":"#/components/schemas/BaseToken"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseToken":{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."}},"required":["name"]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The IdWrapper object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"IdWrapper":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}}
```

## The AgentCollaborations object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentCollaborations":{"type":"array","description":"List of agent collaborations which allows an agent to hand off its task to other agents.","items":{"type":"object","properties":{"agentId":{"type":"string","description":"Identifier of the agent."},"description":{"type":"string","description":"Description of the agent collaboration."}}}}}}}
```

## The TriggerType object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"TriggerType":{"type":"string","enum":["endpoint","slack"],"description":"Type of the trigger. The `slack` trigger type can be used only for `support` agent type."}}}}
```

## The CommerceEventsTriggerType object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"CommerceEventsTriggerType":{"type":"string","enum":["commerce_events"],"description":"Type of the trigger."}}}}
```

## The AgentTrigger object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentTrigger":{"oneOf":[{"type":"object","properties":{"type":{"$ref":"#/components/schemas/TriggerType"}},"required":["type"]},{"type":"object","properties":{"type":{"$ref":"#/components/schemas/CommerceEventsTriggerType"},"config":{"type":"object","description":"Additional configuration for the trigger.","properties":{"events":{"type":"string","description":"List of events that trigger the agent."}},"required":["events"]}},"required":["type","config"]}]},"TriggerType":{"type":"string","enum":["endpoint","slack"],"description":"Type of the trigger. The `slack` trigger type can be used only for `support` agent type."},"CommerceEventsTriggerType":{"type":"string","enum":["commerce_events"],"description":"Type of the trigger."}}}}
```

## The HandOff object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"HandOff":{"type":"boolean","description":"Indicates whether the agent is handOff or not. HandOff agents are special types of agents which can be called by other agents through `agentCollaborations` property and their configuration is hidden."}}}}
```

## The BaseForAgentAndTemplateAndHandOff object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"BaseForAgentAndTemplateAndHandOff":{"type":"object","properties":{"name":{"type":"object","description":"Localized name of the agent.","additionalProperties":{"type":"string"}},"description":{"type":"object","description":"Description of the agent.","additionalProperties":{"type":"string"}}}}}}}
```

## The BaseForAgentAndTemplate object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"BaseForAgentAndTemplate":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentAndTemplateAndHandOff"},{"type":"object","properties":{"userPrompt":{"type":"string","description":"LLM Prompt which describes how agent should work in a detailed way, which tools it could use to solve problems etc; it can contain examples and step by step guidance."},"icon":{"type":"string","description":"The fa class of react icon."},"tags":{"type":"array","items":{"type":"string","description":"Markers that allow you to categorize the agent."}},"enabled":{"type":"boolean","description":"Indicates whether the agent is enabled.","default":false}},"required":["name"]}]},"BaseForAgentAndTemplateAndHandOff":{"type":"object","properties":{"name":{"type":"object","description":"Localized name of the agent.","additionalProperties":{"type":"string"}},"description":{"type":"object","description":"Description of the agent.","additionalProperties":{"type":"string"}}}}}}}
```

## The BaseForAgentRequestAndResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"BaseForAgentRequestAndResponse":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentAndTemplate"},{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/AgentTrigger"}},"agentCollaborations":{"$ref":"#/components/schemas/AgentCollaborations"},"maxRecursionLimit":{"type":"integer","description":"Defines the maximum number of reasoning steps or internal calls an AI agent is allowed to perform during a single task. Helps prevent infinite loops or excessive resource usage.","default":20,"minimum":1,"maximum":50},"enabledMemory":{"type":"boolean","description":"Defines whether the session memory should be stored between different agent calls.","default":false}},"required":["userPrompt","triggers"]}]},"BaseForAgentAndTemplate":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentAndTemplateAndHandOff"},{"type":"object","properties":{"userPrompt":{"type":"string","description":"LLM Prompt which describes how agent should work in a detailed way, which tools it could use to solve problems etc; it can contain examples and step by step guidance."},"icon":{"type":"string","description":"The fa class of react icon."},"tags":{"type":"array","items":{"type":"string","description":"Markers that allow you to categorize the agent."}},"enabled":{"type":"boolean","description":"Indicates whether the agent is enabled.","default":false}},"required":["name"]}]},"BaseForAgentAndTemplateAndHandOff":{"type":"object","properties":{"name":{"type":"object","description":"Localized name of the agent.","additionalProperties":{"type":"string"}},"description":{"type":"object","description":"Description of the agent.","additionalProperties":{"type":"string"}}}},"AgentTrigger":{"oneOf":[{"type":"object","properties":{"type":{"$ref":"#/components/schemas/TriggerType"}},"required":["type"]},{"type":"object","properties":{"type":{"$ref":"#/components/schemas/CommerceEventsTriggerType"},"config":{"type":"object","description":"Additional configuration for the trigger.","properties":{"events":{"type":"string","description":"List of events that trigger the agent."}},"required":["events"]}},"required":["type","config"]}]},"TriggerType":{"type":"string","enum":["endpoint","slack"],"description":"Type of the trigger. The `slack` trigger type can be used only for `support` agent type."},"CommerceEventsTriggerType":{"type":"string","enum":["commerce_events"],"description":"Type of the trigger."},"AgentCollaborations":{"type":"array","description":"List of agent collaborations which allows an agent to hand off its task to other agents.","items":{"type":"object","properties":{"agentId":{"type":"string","description":"Identifier of the agent."},"description":{"type":"string","description":"Description of the agent collaboration."}}}}}}}
```

## The AgentTemplateResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentTemplateResponse":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentAndTemplate"},{"type":"object","properties":{"templatePrompt":{"type":"string","description":"Immutable LLM base prompt which is concatenated with the `userPrompt`."},"id":{"type":"string","description":"Identifier of the agent."},"nativeTools":{"$ref":"#/components/schemas/NativeToolsResponse"},"mcpServers":{"$ref":"#/components/schemas/AgentMcpServersResponse"}}}]},"BaseForAgentAndTemplate":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentAndTemplateAndHandOff"},{"type":"object","properties":{"userPrompt":{"type":"string","description":"LLM Prompt which describes how agent should work in a detailed way, which tools it could use to solve problems etc; it can contain examples and step by step guidance."},"icon":{"type":"string","description":"The fa class of react icon."},"tags":{"type":"array","items":{"type":"string","description":"Markers that allow you to categorize the agent."}},"enabled":{"type":"boolean","description":"Indicates whether the agent is enabled.","default":false}},"required":["name"]}]},"BaseForAgentAndTemplateAndHandOff":{"type":"object","properties":{"name":{"type":"object","description":"Localized name of the agent.","additionalProperties":{"type":"string"}},"description":{"type":"object","description":"Description of the agent.","additionalProperties":{"type":"string"}}}},"NativeToolsResponse":{"type":"array","description":"List of native tools which agents should have access to.","items":{"oneOf":[{"$ref":"#/components/schemas/SlackNativeToolResponse"},{"$ref":"#/components/schemas/RagCustomNativeToolResponse"},{"$ref":"#/components/schemas/RagEmporixNativeToolResponse"}]}},"SlackNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For SlackNativeTool it has to be set to `slack`."},"config":{"$ref":"#/components/schemas/SlackNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseNativeTool":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/NativeToolType"},"name":{"type":"string","description":"Name of the tool."},"enabled":{"type":"boolean","description":"An indicator whether the tool is enabled.","default":false}},"required":["type","name"]},"NativeToolType":{"type":"string","enum":["slack","rag_custom","rag_emporix"],"description":"Type of the native tool."},"SlackNativeToolConfigResponse":{"type":"object","properties":{"teamId":{"type":"string","description":"Unique identifier of the Slack workspace (team) associated with the request. Used to distinguish the source Slack environment when handling events or API calls."}},"required":["teamId"]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]},"RagCustomNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For `RagCustomNativeTool`, it has to be set to `rag_custom`."},"config":{"$ref":"#/components/schemas/RagCustomNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"RagCustomNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomNativeToolConfig"},{"type":"object","properties":{"databaseConfig":{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfigResponse"},"embeddingConfig":{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfigResponse"}}}]},"RagCustomNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"maxResults":{"type":"integer","default":5,"description":"The maximum number of results found in the Vector Database."}},"required":["prompt"]},"RagCustomDatabaseNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomDatabaseNativeToolConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the database."},"type":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseType"}]},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"collectionName":{"type":"string","description":"Name of the database collection."}},"required":["url","type","entityType","collectionName"]},"RagCustomDatabaseType":{"type":"string","enum":["qdrant"],"description":"Type of the database."},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"RagCustomEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomEmbeddingNativeToolConfig":{"type":"object","properties":{"model":{"type":"string","description":"Name of the OpenAI LLM model which should be used to create embedding of user's input in order to perform search operation."}},"required":["model"]},"RagEmporixNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For `RagEmporixNativeTool`, it has to be set to `rag_emporix`."},"config":{"$ref":"#/components/schemas/RagEmporixNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"RagEmporixNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagEmporixNativeToolConfig"},{"type":"object","properties":{"embeddingConfig":{"oneOf":[{"$ref":"#/components/schemas/EmporixOpenAiRagEmporixEmbeddingNativeToolConfig"},{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfigResponse"},{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse"}]}}}]},"RagEmporixNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"indexedFields":{"type":"array","description":"This field specifies the fields of the given entityType that are used for generating embeddings. The provided values are then concatenated and converted to embeddings.","items":{"type":"object","properties":{"name":{"type":"string","description":"It can act as an alias for the field key. For example, if the 'name.en' key is provided then its alias could be 'English Name' and that value is used in embedding input."},"key":{"type":"string","description":"Unique value representing the entityType key."}},"required":["key"]}}},"required":["prompt","entityType","indexedFields"]},"EmporixOpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."}},"required":["provider"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]},"OpenAiRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"OpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."},"model":{"type":"string","description":"OpenAI LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096}},"required":["provider","model","dimensions"]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'self_hosted_ollama'."},"model":{"type":"string","description":"Ollama LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096},"url":{"type":"string","description":"Base URL where Ollama is hosted."}},"required":["provider","model","dimensions","url"]},"AgentMcpServersResponse":{"type":"array","description":"List of MCP servers which agents should have access to.","items":{"oneOf":[{"$ref":"#/components/schemas/CustomAgentMcpServerResponse"},{"$ref":"#/components/schemas/PredefinedAgentMcpServer"}]}},"CustomAgentMcpServerResponse":{"allOf":[{"$ref":"#/components/schemas/CustomAgentMcpServerRequest"},{"type":"object","properties":{"mcpServer":{"allOf":[{"$ref":"#/components/schemas/McpServerResponse"},{"description":"The full response representing MCP server. If the `expand=mcpServer` is **not** used, then only `id` field is returned, otherwise all fields are returned."}]}}}]},"CustomAgentMcpServerRequest":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For `CustomMcpServer` it has to be set to `custom`."},"mcpServer":{"type":"object","properties":{"id":{"type":"string","description":"ID of the MCP server."}},"required":["id"]}},"required":["mcpServer"]}]},"BaseAgentMcpServer":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/McpServerType"}},"required":["type"]},"McpServerType":{"type":"string","enum":["custom","predefined"],"description":"Type of the MCP server. The `custom` type allows you to integrate with your own MCP server instance, while the `predefined` type allows you to integrate with one of the instances provided by Emporix."},"McpServerResponse":{"allOf":[{"$ref":"#/components/schemas/BaseMcpServer"},{"type":"object","properties":{"config":{"$ref":"#/components/schemas/McpServerConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseMcpServer":{"type":"object","description":"An object representing customer's own implementation of the MCP server.","properties":{"name":{"type":"string","description":"Name of the MCP server."},"enabled":{"type":"boolean","description":"An indicator whether the MCP server is enabled.","default":false},"transport":{"$ref":"#/components/schemas/CustomMcpServerTransportType"}}},"CustomMcpServerTransportType":{"type":"string","enum":["streamable_http","sse"],"description":"Type of the communication between the agent and the MCP server. The `streamable_http` protocol is recommended, since the `sse` protocol is deprecated."},"McpServerConfigResponse":{"allOf":[{"$ref":"#/components/schemas/McpServerConfig"},{"type":"object","properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"McpServerConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the MCP server."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization, e.g. `Authorization`."}},"required":["url"]},"PredefinedAgentMcpServer":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For the `PredefinedMcpServer` it has to be set to `predefined`."},"domain":{"enum":["customer","extensibility","order","product","frontend"]},"tools":{"type":"array","description":"List of the tools which should be used by the agent from this particular MCP server.","items":{"type":"string"}}}}]}}}}
```

## The AgentHandOffResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentHandOffResponse":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentAndTemplateAndHandOff"},{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the agent."},"handOff":{"allOf":[{"$ref":"#/components/schemas/HandOff"}]},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseForAgentAndTemplateAndHandOff":{"type":"object","properties":{"name":{"type":"object","description":"Localized name of the agent.","additionalProperties":{"type":"string"}},"description":{"type":"object","description":"Description of the agent.","additionalProperties":{"type":"string"}}}},"HandOff":{"type":"boolean","description":"Indicates whether the agent is handOff or not. HandOff agents are special types of agents which can be called by other agents through `agentCollaborations` property and their configuration is hidden."},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The AgentRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentRequest":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentRequestAndResponse"},{"type":"object","properties":{"nativeTools":{"type":"array","items":{"$ref":"#/components/schemas/IdWrapper"},"description":"ID of the native tools."},"llmConfig":{"oneOf":[{"$ref":"#/components/schemas/EmporixLlm"},{"$ref":"#/components/schemas/ApiKeyLlmRequest"},{"$ref":"#/components/schemas/SelfHostedLlmRequest"}]},"mcpServers":{"$ref":"#/components/schemas/AgentMcpServersRequest"},"metadata":{"$ref":"#/components/schemas/MetadataRequest"}},"required":["llmConfig","mcpServers"]}]},"BaseForAgentRequestAndResponse":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentAndTemplate"},{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/AgentTrigger"}},"agentCollaborations":{"$ref":"#/components/schemas/AgentCollaborations"},"maxRecursionLimit":{"type":"integer","description":"Defines the maximum number of reasoning steps or internal calls an AI agent is allowed to perform during a single task. Helps prevent infinite loops or excessive resource usage.","default":20,"minimum":1,"maximum":50},"enabledMemory":{"type":"boolean","description":"Defines whether the session memory should be stored between different agent calls.","default":false}},"required":["userPrompt","triggers"]}]},"BaseForAgentAndTemplate":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentAndTemplateAndHandOff"},{"type":"object","properties":{"userPrompt":{"type":"string","description":"LLM Prompt which describes how agent should work in a detailed way, which tools it could use to solve problems etc; it can contain examples and step by step guidance."},"icon":{"type":"string","description":"The fa class of react icon."},"tags":{"type":"array","items":{"type":"string","description":"Markers that allow you to categorize the agent."}},"enabled":{"type":"boolean","description":"Indicates whether the agent is enabled.","default":false}},"required":["name"]}]},"BaseForAgentAndTemplateAndHandOff":{"type":"object","properties":{"name":{"type":"object","description":"Localized name of the agent.","additionalProperties":{"type":"string"}},"description":{"type":"object","description":"Description of the agent.","additionalProperties":{"type":"string"}}}},"AgentTrigger":{"oneOf":[{"type":"object","properties":{"type":{"$ref":"#/components/schemas/TriggerType"}},"required":["type"]},{"type":"object","properties":{"type":{"$ref":"#/components/schemas/CommerceEventsTriggerType"},"config":{"type":"object","description":"Additional configuration for the trigger.","properties":{"events":{"type":"string","description":"List of events that trigger the agent."}},"required":["events"]}},"required":["type","config"]}]},"TriggerType":{"type":"string","enum":["endpoint","slack"],"description":"Type of the trigger. The `slack` trigger type can be used only for `support` agent type."},"CommerceEventsTriggerType":{"type":"string","enum":["commerce_events"],"description":"Type of the trigger."},"AgentCollaborations":{"type":"array","description":"List of agent collaborations which allows an agent to hand off its task to other agents.","items":{"type":"object","properties":{"agentId":{"type":"string","description":"Identifier of the agent."},"description":{"type":"string","description":"Description of the agent collaboration."}}}},"IdWrapper":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]},"EmporixLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"type":"string","description":"Type of the LLM Provider. The `emporix_openai` allows using the OpenAI token provided by Emporix. The token usage is limited. When using this provider `apiKey` property can be omitted.","enum":["emporix_openai"]}},"required":["provider"]}]},"BaseLlm":{"type":"object","properties":{"model":{"type":"string","description":"The exact name of the model."},"temperature":{"type":"number","format":"float","description":"Value between 0.1 and 1.0 (inclusive), in steps of 0.1. The lower value the more creative (but less stable) the model is.","enum":[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]},"maxTokens":{"type":"integer","description":"The limit of tokens which agent can burn during one request session."}},"required":["model","temperature","maxTokens"]},"ApiKeyLlmRequest":{"allOf":[{"$ref":"#/components/schemas/ApiKeyLlm"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/InnerTokenRequest"}},"required":["token"]}]},"ApiKeyLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"$ref":"#/components/schemas/ApiKeyLlmProvider"}},"required":["provider"]}]},"ApiKeyLlmProvider":{"type":"string","description":"Type of the LLM Provider. The supported providers allows you to provide your own API key. When using this providers, the `apiKey` property cannot be omitted.","enum":["openai","google","anthropic"]},"InnerTokenRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}},"required":["id"]},"SelfHostedLlmRequest":{"allOf":[{"$ref":"#/components/schemas/SelfHostedLlm"},{"type":"object","properties":{"selfHostedParams":{"$ref":"#/components/schemas/SelfHostedParamsRequest"}},"required":["selfHostedParams"]}]},"SelfHostedLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"type":"string","description":"Type of the LLM Provider. The self-hosted LLM allows you to provide your own LLMs. When using this providers, the `selfHostedParams.url` property cannot be omitted.","enum":["self_hosted_ollama","self_hosted_vllm"]}},"required":["provider"]}]},"SelfHostedParamsRequest":{"allOf":[{"$ref":"#/components/schemas/SelfHostedParams"},{"type":"object"},{"properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/InnerTokenRequest"}}}]},"SelfHostedParams":{"type":"object","properties":{"url":{"type":"string","description":"Url of the self-hosted LLM."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization e.g. `Authorization`."}},"required":["url"]},"AgentMcpServersRequest":{"type":"array","description":"List of MCP servers which agents should have access to.","items":{"oneOf":[{"$ref":"#/components/schemas/CustomAgentMcpServerRequest"},{"$ref":"#/components/schemas/PredefinedAgentMcpServer"}]}},"CustomAgentMcpServerRequest":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For `CustomMcpServer` it has to be set to `custom`."},"mcpServer":{"type":"object","properties":{"id":{"type":"string","description":"ID of the MCP server."}},"required":["id"]}},"required":["mcpServer"]}]},"BaseAgentMcpServer":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/McpServerType"}},"required":["type"]},"McpServerType":{"type":"string","enum":["custom","predefined"],"description":"Type of the MCP server. The `custom` type allows you to integrate with your own MCP server instance, while the `predefined` type allows you to integrate with one of the instances provided by Emporix."},"PredefinedAgentMcpServer":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For the `PredefinedMcpServer` it has to be set to `predefined`."},"domain":{"enum":["customer","extensibility","order","product","frontend"]},"tools":{"type":"array","description":"List of the tools which should be used by the agent from this particular MCP server.","items":{"type":"string"}}}}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The AgentResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentResponse":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentRequestAndResponse"},{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the agent."},"nativeTools":{"$ref":"#/components/schemas/NativeToolsResponse"},"llmConfig":{"oneOf":[{"$ref":"#/components/schemas/EmporixLlm"},{"$ref":"#/components/schemas/ApiKeyLlmResponse"},{"$ref":"#/components/schemas/SelfHostedLlmResponse"}]},"mcpServers":{"$ref":"#/components/schemas/AgentMcpServersResponse"},"handOff":{"allOf":[{"$ref":"#/components/schemas/HandOff"}]},"type":{"$ref":"#/components/schemas/AgentType"},"templatePrompt":{"type":"string","description":"Prompt which is inherited from the template (if agent is created based on the template). The prompt provided by the user is then concatenated with this prompt."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseForAgentRequestAndResponse":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentAndTemplate"},{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/AgentTrigger"}},"agentCollaborations":{"$ref":"#/components/schemas/AgentCollaborations"},"maxRecursionLimit":{"type":"integer","description":"Defines the maximum number of reasoning steps or internal calls an AI agent is allowed to perform during a single task. Helps prevent infinite loops or excessive resource usage.","default":20,"minimum":1,"maximum":50},"enabledMemory":{"type":"boolean","description":"Defines whether the session memory should be stored between different agent calls.","default":false}},"required":["userPrompt","triggers"]}]},"BaseForAgentAndTemplate":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentAndTemplateAndHandOff"},{"type":"object","properties":{"userPrompt":{"type":"string","description":"LLM Prompt which describes how agent should work in a detailed way, which tools it could use to solve problems etc; it can contain examples and step by step guidance."},"icon":{"type":"string","description":"The fa class of react icon."},"tags":{"type":"array","items":{"type":"string","description":"Markers that allow you to categorize the agent."}},"enabled":{"type":"boolean","description":"Indicates whether the agent is enabled.","default":false}},"required":["name"]}]},"BaseForAgentAndTemplateAndHandOff":{"type":"object","properties":{"name":{"type":"object","description":"Localized name of the agent.","additionalProperties":{"type":"string"}},"description":{"type":"object","description":"Description of the agent.","additionalProperties":{"type":"string"}}}},"AgentTrigger":{"oneOf":[{"type":"object","properties":{"type":{"$ref":"#/components/schemas/TriggerType"}},"required":["type"]},{"type":"object","properties":{"type":{"$ref":"#/components/schemas/CommerceEventsTriggerType"},"config":{"type":"object","description":"Additional configuration for the trigger.","properties":{"events":{"type":"string","description":"List of events that trigger the agent."}},"required":["events"]}},"required":["type","config"]}]},"TriggerType":{"type":"string","enum":["endpoint","slack"],"description":"Type of the trigger. The `slack` trigger type can be used only for `support` agent type."},"CommerceEventsTriggerType":{"type":"string","enum":["commerce_events"],"description":"Type of the trigger."},"AgentCollaborations":{"type":"array","description":"List of agent collaborations which allows an agent to hand off its task to other agents.","items":{"type":"object","properties":{"agentId":{"type":"string","description":"Identifier of the agent."},"description":{"type":"string","description":"Description of the agent collaboration."}}}},"NativeToolsResponse":{"type":"array","description":"List of native tools which agents should have access to.","items":{"oneOf":[{"$ref":"#/components/schemas/SlackNativeToolResponse"},{"$ref":"#/components/schemas/RagCustomNativeToolResponse"},{"$ref":"#/components/schemas/RagEmporixNativeToolResponse"}]}},"SlackNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For SlackNativeTool it has to be set to `slack`."},"config":{"$ref":"#/components/schemas/SlackNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseNativeTool":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/NativeToolType"},"name":{"type":"string","description":"Name of the tool."},"enabled":{"type":"boolean","description":"An indicator whether the tool is enabled.","default":false}},"required":["type","name"]},"NativeToolType":{"type":"string","enum":["slack","rag_custom","rag_emporix"],"description":"Type of the native tool."},"SlackNativeToolConfigResponse":{"type":"object","properties":{"teamId":{"type":"string","description":"Unique identifier of the Slack workspace (team) associated with the request. Used to distinguish the source Slack environment when handling events or API calls."}},"required":["teamId"]},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]},"RagCustomNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For `RagCustomNativeTool`, it has to be set to `rag_custom`."},"config":{"$ref":"#/components/schemas/RagCustomNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"RagCustomNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomNativeToolConfig"},{"type":"object","properties":{"databaseConfig":{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfigResponse"},"embeddingConfig":{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfigResponse"}}}]},"RagCustomNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"maxResults":{"type":"integer","default":5,"description":"The maximum number of results found in the Vector Database."}},"required":["prompt"]},"RagCustomDatabaseNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomDatabaseNativeToolConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the database."},"type":{"allOf":[{"$ref":"#/components/schemas/RagCustomDatabaseType"}]},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"collectionName":{"type":"string","description":"Name of the database collection."}},"required":["url","type","entityType","collectionName"]},"RagCustomDatabaseType":{"type":"string","enum":["qdrant"],"description":"Type of the database."},"RagEntityType":{"type":"string","enum":["product"],"description":"Type of the entity which is stored in the given collection."},"ExpandableTokenResponse":{"oneOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"$ref":"#/components/schemas/ExpandedTokenResponse"}],"description":"The full response representing token. If the `expand=token` is **not** used, then only `id` field is returned, otherwise all fields are returned."},"InnerTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the token."}}},"ExpandedTokenResponse":{"allOf":[{"$ref":"#/components/schemas/InnerTokenResponse"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the token."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"RagCustomEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagCustomEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"RagCustomEmbeddingNativeToolConfig":{"type":"object","properties":{"model":{"type":"string","description":"Name of the OpenAI LLM model which should be used to create embedding of user's input in order to perform search operation."}},"required":["model"]},"RagEmporixNativeToolResponse":{"allOf":[{"$ref":"#/components/schemas/BaseNativeTool"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tool."},"type":{"description":"For `RagEmporixNativeTool`, it has to be set to `rag_emporix`."},"config":{"$ref":"#/components/schemas/RagEmporixNativeToolConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"RagEmporixNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/RagEmporixNativeToolConfig"},{"type":"object","properties":{"embeddingConfig":{"oneOf":[{"$ref":"#/components/schemas/EmporixOpenAiRagEmporixEmbeddingNativeToolConfig"},{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfigResponse"},{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse"}]}}}]},"RagEmporixNativeToolConfig":{"type":"object","properties":{"prompt":{"type":"string","description":"The prompt for an agent. It should define when and why this tool is to be called."},"entityType":{"allOf":[{"$ref":"#/components/schemas/RagEntityType"}]},"indexedFields":{"type":"array","description":"This field specifies the fields of the given entityType that are used for generating embeddings. The provided values are then concatenated and converted to embeddings.","items":{"type":"object","properties":{"name":{"type":"string","description":"It can act as an alias for the field key. For example, if the 'name.en' key is provided then its alias could be 'English Name' and that value is used in embedding input."},"key":{"type":"string","description":"Unique value representing the entityType key."}},"required":["key"]}}},"required":["prompt","entityType","indexedFields"]},"EmporixOpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."}},"required":["provider"]},"RagLlmProvider":{"type":"string","enum":["emporix_openai","openai","self_hosted_ollama"]},"OpenAiRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/OpenAiRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"OpenAiRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'emporix_openai'."},"model":{"type":"string","description":"OpenAI LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096}},"required":["provider","model","dimensions"]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfigResponse":{"allOf":[{"$ref":"#/components/schemas/SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"SelfHostedOllamaRagEmporixEmbeddingNativeToolConfig":{"type":"object","properties":{"provider":{"allOf":[{"$ref":"#/components/schemas/RagLlmProvider"}],"description":"For this type, it should be set to 'self_hosted_ollama'."},"model":{"type":"string","description":"Ollama LLM model to be used for generating embeddings for indexed products and user's input query."},"dimensions":{"type":"integer","description":"Number of dimensions of embedding.","minimum":128,"maximum":4096},"url":{"type":"string","description":"Base URL where Ollama is hosted."}},"required":["provider","model","dimensions","url"]},"EmporixLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"type":"string","description":"Type of the LLM Provider. The `emporix_openai` allows using the OpenAI token provided by Emporix. The token usage is limited. When using this provider `apiKey` property can be omitted.","enum":["emporix_openai"]}},"required":["provider"]}]},"BaseLlm":{"type":"object","properties":{"model":{"type":"string","description":"The exact name of the model."},"temperature":{"type":"number","format":"float","description":"Value between 0.1 and 1.0 (inclusive), in steps of 0.1. The lower value the more creative (but less stable) the model is.","enum":[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]},"maxTokens":{"type":"integer","description":"The limit of tokens which agent can burn during one request session."}},"required":["model","temperature","maxTokens"]},"ApiKeyLlmResponse":{"allOf":[{"$ref":"#/components/schemas/ApiKeyLlm"},{"type":"object","properties":{"token":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"ApiKeyLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"$ref":"#/components/schemas/ApiKeyLlmProvider"}},"required":["provider"]}]},"ApiKeyLlmProvider":{"type":"string","description":"Type of the LLM Provider. The supported providers allows you to provide your own API key. When using this providers, the `apiKey` property cannot be omitted.","enum":["openai","google","anthropic"]},"SelfHostedLlmResponse":{"allOf":[{"$ref":"#/components/schemas/SelfHostedLlm"},{"type":"object","properties":{"selfHostedParams":{"$ref":"#/components/schemas/SelfHostedParamsResponse"}}}]},"SelfHostedLlm":{"allOf":[{"$ref":"#/components/schemas/BaseLlm"},{"type":"object","properties":{"provider":{"type":"string","description":"Type of the LLM Provider. The self-hosted LLM allows you to provide your own LLMs. When using this providers, the `selfHostedParams.url` property cannot be omitted.","enum":["self_hosted_ollama","self_hosted_vllm"]}},"required":["provider"]}]},"SelfHostedParamsResponse":{"allOf":[{"$ref":"#/components/schemas/SelfHostedParams"},{"type":"object","properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"SelfHostedParams":{"type":"object","properties":{"url":{"type":"string","description":"Url of the self-hosted LLM."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization e.g. `Authorization`."}},"required":["url"]},"AgentMcpServersResponse":{"type":"array","description":"List of MCP servers which agents should have access to.","items":{"oneOf":[{"$ref":"#/components/schemas/CustomAgentMcpServerResponse"},{"$ref":"#/components/schemas/PredefinedAgentMcpServer"}]}},"CustomAgentMcpServerResponse":{"allOf":[{"$ref":"#/components/schemas/CustomAgentMcpServerRequest"},{"type":"object","properties":{"mcpServer":{"allOf":[{"$ref":"#/components/schemas/McpServerResponse"},{"description":"The full response representing MCP server. If the `expand=mcpServer` is **not** used, then only `id` field is returned, otherwise all fields are returned."}]}}}]},"CustomAgentMcpServerRequest":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For `CustomMcpServer` it has to be set to `custom`."},"mcpServer":{"type":"object","properties":{"id":{"type":"string","description":"ID of the MCP server."}},"required":["id"]}},"required":["mcpServer"]}]},"BaseAgentMcpServer":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/McpServerType"}},"required":["type"]},"McpServerType":{"type":"string","enum":["custom","predefined"],"description":"Type of the MCP server. The `custom` type allows you to integrate with your own MCP server instance, while the `predefined` type allows you to integrate with one of the instances provided by Emporix."},"McpServerResponse":{"allOf":[{"$ref":"#/components/schemas/BaseMcpServer"},{"type":"object","properties":{"config":{"$ref":"#/components/schemas/McpServerConfigResponse"},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}}]},"BaseMcpServer":{"type":"object","description":"An object representing customer's own implementation of the MCP server.","properties":{"name":{"type":"string","description":"Name of the MCP server."},"enabled":{"type":"boolean","description":"An indicator whether the MCP server is enabled.","default":false},"transport":{"$ref":"#/components/schemas/CustomMcpServerTransportType"}}},"CustomMcpServerTransportType":{"type":"string","enum":["streamable_http","sse"],"description":"Type of the communication between the agent and the MCP server. The `streamable_http` protocol is recommended, since the `sse` protocol is deprecated."},"McpServerConfigResponse":{"allOf":[{"$ref":"#/components/schemas/McpServerConfig"},{"type":"object","properties":{"authorizationHeaderToken":{"$ref":"#/components/schemas/ExpandableTokenResponse"}}}]},"McpServerConfig":{"type":"object","properties":{"url":{"type":"string","description":"URL of the MCP server."},"authorizationHeaderName":{"type":"string","description":"Name of the header required for authorization, e.g. `Authorization`."}},"required":["url"]},"PredefinedAgentMcpServer":{"allOf":[{"$ref":"#/components/schemas/BaseAgentMcpServer"},{"type":"object","properties":{"type":{"description":"For the `PredefinedMcpServer` it has to be set to `predefined`."},"domain":{"enum":["customer","extensibility","order","product","frontend"]},"tools":{"type":"array","description":"List of the tools which should be used by the agent from this particular MCP server.","items":{"type":"string"}}}}]},"HandOff":{"type":"boolean","description":"Indicates whether the agent is handOff or not. HandOff agents are special types of agents which can be called by other agents through `agentCollaborations` property and their configuration is hidden."},"AgentType":{"type":"string","description":"Type of the agent handling the request.","enum":["support","generic","complaint","anti_fraud"]}}}}
```

## The MetadataRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The MetadataResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The JobStatus object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"JobStatus":{"type":"string","enum":["in_progress","success","failure"],"description":"Status of the job."}}}}
```

## The JobType object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"JobType":{"type":"string","enum":["IMPORT","EXPORT","AGENT_CHAT"],"description":"Type of the job."}}}}
```

## The Job object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"Job":{"type":"object","description":"Contains information about the job result - whether it was successful or not, what was the agent output etc.","properties":{"id":{"type":"string","description":"Unique identifier of the job."},"agentType":{"$ref":"#/components/schemas/AgentType"},"status":{"$ref":"#/components/schemas/JobStatus"},"type":{"$ref":"#/components/schemas/JobType"},"exportResult":{"$ref":"#/components/schemas/ExportResult"},"importResult":{"$ref":"#/components/schemas/ImportResult"},"sessionId":{"type":"string","description":"Unique identifier of the session."},"agentId":{"type":"string","description":"Unique identifier of the agent."},"message":{"type":"string","description":"Agent message."},"commerceEvent":{"type":"string","description":"Commerce event which triggered the job."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}},"AgentType":{"type":"string","description":"Type of the agent handling the request.","enum":["support","generic","complaint","anti_fraud"]},"JobStatus":{"type":"string","enum":["in_progress","success","failure"],"description":"Status of the job."},"JobType":{"type":"string","enum":["IMPORT","EXPORT","AGENT_CHAT"],"description":"Type of the job."},"ExportResult":{"type":"object","properties":{"data":{"type":"string","description":"The base64 encoded JSON value of the exported agents with related tools and MCP servers."},"checksum":{"type":"string","description":"Checksum calculated based on JSON value. Validates if importing JSON is exactly the same as the exported one."}}},"ImportResult":{"type":"object","properties":{"message":{"type":"string","description":"Short summary of the import."},"summary":{"type":"object","description":"Summary of the import.","properties":{"agents":{"type":"array","items":{"$ref":"#/components/schemas/ImportedEntity"}},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ImportedEntity"}},"mcpServers":{"type":"array","items":{"$ref":"#/components/schemas/ImportedEntity"}}}}}},"ImportedEntity":{"type":"object","properties":{"id":{"type":"string","description":"ID of the imported entity."},"name":{"type":"string","description":"Name of the imported entity."},"state":{"type":"string","description":"State of the imported entity.","enum":["TO_CREATE","ENABLED","DISABLED","EXISTS"]}}},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The ImportResult object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ImportResult":{"type":"object","properties":{"message":{"type":"string","description":"Short summary of the import."},"summary":{"type":"object","description":"Summary of the import.","properties":{"agents":{"type":"array","items":{"$ref":"#/components/schemas/ImportedEntity"}},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ImportedEntity"}},"mcpServers":{"type":"array","items":{"$ref":"#/components/schemas/ImportedEntity"}}}}}},"ImportedEntity":{"type":"object","properties":{"id":{"type":"string","description":"ID of the imported entity."},"name":{"type":"string","description":"Name of the imported entity."},"state":{"type":"string","description":"State of the imported entity.","enum":["TO_CREATE","ENABLED","DISABLED","EXISTS"]}}}}}}
```

## The ExportResult object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ExportResult":{"type":"object","properties":{"data":{"type":"string","description":"The base64 encoded JSON value of the exported agents with related tools and MCP servers."},"checksum":{"type":"string","description":"Checksum calculated based on JSON value. Validates if importing JSON is exactly the same as the exported one."}}}}}}
```

## The ImportedEntity object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ImportedEntity":{"type":"object","properties":{"id":{"type":"string","description":"ID of the imported entity."},"name":{"type":"string","description":"Name of the imported entity."},"state":{"type":"string","description":"State of the imported entity.","enum":["TO_CREATE","ENABLED","DISABLED","EXISTS"]}}}}}}
```

## The JobIdResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"JobIdResponse":{"type":"object","properties":{"jobId":{"type":"string","description":"Identifier of the job."}}}}}}
```

## The ChatResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ChatResponse":{"type":"object","properties":{"agentId":{"type":"string","description":"Unique identifier of the agent."},"agentType":{"$ref":"#/components/schemas/AgentType"},"sessionId":{"type":"string","description":"Unique identifier of the session."},"message":{"type":"string","description":"Agent message."}}},"AgentType":{"type":"string","description":"Type of the agent handling the request.","enum":["support","generic","complaint","anti_fraud"]}}}}
```

## The LogSeverity object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"LogSeverity":{"type":"string","enum":["INFO","WARNING","ERROR"],"description":"Severity level of the log entry."}}}}
```

## The AgentLogMessageResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentLogMessageResponse":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"Timestamp when the log message was created."},"severity":{"$ref":"#/components/schemas/LogSeverity"},"message":{"type":"string","description":"The log message content."},"agentId":{"type":"string","description":"Unique identifier of the agent that generated the log."},"requestId":{"type":"string","description":"Unique identifier of the request associated with the log."},"isBusinessLog":{"type":"boolean","description":"Whether this is a business log entry."}}},"LogSeverity":{"type":"string","enum":["INFO","WARNING","ERROR"],"description":"Severity level of the log entry."}}}}
```

## The AgentRequestResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentRequestResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the request log."},"sessionId":{"type":"string","description":"Unique identifier of the session."},"requestId":{"type":"string","description":"Unique identifier of the request."},"triggerAgentId":{"type":"string","description":"Unique identifier of the agent that triggered the request."},"collaborationAgents":{"type":"array","items":{"type":"string"},"description":"List of agent IDs that collaborated in this request."},"severity":{"$ref":"#/components/schemas/LogSeverity"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/AgentLogMessageResponse"},"description":"List of log messages associated with this request."},"duration":{"type":"integer","format":"int64","description":"Duration of the request in seconds."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}},"LogSeverity":{"type":"string","enum":["INFO","WARNING","ERROR"],"description":"Severity level of the log entry."},"AgentLogMessageResponse":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"Timestamp when the log message was created."},"severity":{"$ref":"#/components/schemas/LogSeverity"},"message":{"type":"string","description":"The log message content."},"agentId":{"type":"string","description":"Unique identifier of the agent that generated the log."},"requestId":{"type":"string","description":"Unique identifier of the request associated with the log."},"isBusinessLog":{"type":"boolean","description":"Whether this is a business log entry."}}},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The AgentSessionResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentSessionResponse":{"type":"object","properties":{"sessionId":{"type":"string","description":"Unique identifier of the session."},"triggerAgentId":{"type":"string","description":"Unique identifier of the agent that triggered the session."},"severity":{"$ref":"#/components/schemas/LogSeverity"},"agents":{"type":"array","items":{"type":"string"},"description":"List of agent IDs that participated in this session."},"messages":{"type":"array","items":{"$ref":"#/components/schemas/AgentLogMessageResponse"},"description":"List of log messages associated with this session."},"duration":{"type":"integer","format":"int64","description":"Duration of the session in seconds."},"metadata":{"$ref":"#/components/schemas/MetadataResponse"}}},"LogSeverity":{"type":"string","enum":["INFO","WARNING","ERROR"],"description":"Severity level of the log entry."},"AgentLogMessageResponse":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"Timestamp when the log message was created."},"severity":{"$ref":"#/components/schemas/LogSeverity"},"message":{"type":"string","description":"The log message content."},"agentId":{"type":"string","description":"Unique identifier of the agent that generated the log."},"requestId":{"type":"string","description":"Unique identifier of the request associated with the log."},"isBusinessLog":{"type":"boolean","description":"Whether this is a business log entry."}}},"MetadataResponse":{"allOf":[{"$ref":"#/components/schemas/MetadataRequest"},{"type":"object","properties":{"createdAt":{"description":"Date and time when the object was created. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"},"modifiedAt":{"description":"Date and time when the object was last modified. The value is approved as an ISO-8601 representation of an Instant. For example: `2022-04-31T13:18:02.379Z`","type":"string"}},"required":["version","createdAt","modifiedAt"]}]},"MetadataRequest":{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the object. The version is required during the update operation because of the optimistic locking mechanism."}},"required":["version"]}}}}
```

## The GenerationResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"GenerationResponse":{"title":"GenerationResponse","type":"object","description":"Object represents the text generation response.","properties":{"id":{"type":"string","description":"Identifier of the text generation request. The value is populated only if the ID was provided in the request. "},"result":{"type":"string","description":"Text generation result."}}}}}}
```

## The CompletionRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"CompletionRequest":{"title":"CompletionRequest","type":"object","required":["messages"],"properties":{"id":{"type":"string","description":"Identifier of the request. The value is not mandatory - if provided, then the ID is returned in the text generation response."},"messages":{"type":"array","items":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["USER","SYSTEM","ASSISTANT"],"description":"Specifies the role of the message. `SYSTEM` - Provides instructions or context to the AI about the conversation. `USER` - Represents a message sent by the user. `ASSISTANT` - Represents a message generated by the AI."},"content":{"type":"string","description":"Content of the message. Depending on the role parameter, it can be a background instruction, user instruction, or AI response."}}}}}}}}}
```

## The QParamSearchBody object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"QParamSearchBody":{"type":"object","properties":{"q":{"type":"string","description":"A standard query parameter is used to search for specific values. \n\nSee: [Standard Practices - Query parameter](https://developer.emporix.io/api-references/standard-practices/q-param)\n"}}}}}}
```

## The AgentFromTemplateRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"AgentFromTemplateRequest":{"allOf":[{"$ref":"#/components/schemas/BaseForAgentAndTemplateAndHandOff"},{"type":"object","properties":{"userPrompt":{"type":"string","description":"LLM Prompt which describes how agent should work in a detailed way, which tools it could use to solve problems etc; it can contain examples and step by step guidance."}}}],"required":["name","description","userPrompt"]},"BaseForAgentAndTemplateAndHandOff":{"type":"object","properties":{"name":{"type":"object","description":"Localized name of the agent.","additionalProperties":{"type":"string"}},"description":{"type":"object","description":"Description of the agent.","additionalProperties":{"type":"string"}}}}}}}
```

## The PatchRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"PatchRequest":{"type":"array","description":"Partial update operation list.","items":{"type":"object","properties":{"op":{"anyOf":[{"enum":["ADD","REMOVE","REPLACE"]}],"type":"string"},"path":{"type":"string"},"value":{"anyOf":[{"type":"string","description":"Value of the string type."},{"type":"object","description":"Any part of the details object."}]}},"required":["op","path"]}}}}}
```

## The ExportResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ExportResponse":{"allOf":[{"$ref":"#/components/schemas/DataWithChecksum"},{"type":"object","properties":{"exportedAt":{"description":"Date of the export process.","type":"string","format":"date-time"},"jobId":{"description":"ID of the job.","type":"string"}}}]},"DataWithChecksum":{"type":"object","properties":{"data":{"description":"The base64 encoded JSON value of the exported agents with related tools and MCP servers.","type":"string"},"checksum":{"description":"Checksum calculated based on decoded `data` value. Validates if importing JSON is exactly the same as the exported one.","type":"string"}}}}}}
```

## The DataWithChecksum object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"DataWithChecksum":{"type":"object","properties":{"data":{"description":"The base64 encoded JSON value of the exported agents with related tools and MCP servers.","type":"string"},"checksum":{"description":"Checksum calculated based on decoded `data` value. Validates if importing JSON is exactly the same as the exported one.","type":"string"}}}}}}
```

## The ExportRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ExportRequest":{"type":"object","required":["agentIds"],"properties":{"agentIds":{"description":"List of the agents IDs.","type":"array","minimum":0,"maximum":100,"items":{"type":"string"}}}}}}}
```

## The ImportResponse object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ImportResponse":{"allOf":[{"$ref":"#/components/schemas/ImportResult"},{"type":"object","properties":{"importedAt":{"description":"Date of the import process.","type":"string","format":"date-time"},"jobId":{"description":"ID of the job.","type":"string"}}}]},"ImportResult":{"type":"object","properties":{"message":{"type":"string","description":"Short summary of the import."},"summary":{"type":"object","description":"Summary of the import.","properties":{"agents":{"type":"array","items":{"$ref":"#/components/schemas/ImportedEntity"}},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ImportedEntity"}},"mcpServers":{"type":"array","items":{"$ref":"#/components/schemas/ImportedEntity"}}}}}},"ImportedEntity":{"type":"object","properties":{"id":{"type":"string","description":"ID of the imported entity."},"name":{"type":"string","description":"Name of the imported entity."},"state":{"type":"string","description":"State of the imported entity.","enum":["TO_CREATE","ENABLED","DISABLED","EXISTS"]}}}}}}
```

## The ImportRequest object

```json
{"openapi":"3.0.0","info":{"title":"AI Service","version":"0.0.1"},"components":{"schemas":{"ImportRequest":{"allOf":[{"$ref":"#/components/schemas/DataWithChecksum"}],"required":["data","checksum"]},"DataWithChecksum":{"type":"object","properties":{"data":{"description":"The base64 encoded JSON value of the exported agents with related tools and MCP servers.","type":"string"},"checksum":{"description":"Checksum calculated based on decoded `data` value. Validates if importing JSON is exactly the same as the exported one.","type":"string"}}}}}}
```
