{
  "openapi": "3.1.0",
  "info": {
    "title": "Netter Open WebUI e MCP API",
    "version": "0.12.3-netter",
    "description": "API HTTP della chat Netter, estratte dall’immagine Open WebUI bloccata per digest e adattate al boundary effettivo. Preferire MCP per integrazioni con lo storico; per inferenza senza storico usare il gateway /v1. Le API native sono legate alla versione del frontend. WebSocket/Socket.IO e asset HTML non sono operazioni REST OpenAPI.",
    "x-upstream-image": "ghcr.io/open-webui/open-webui:v0.12.3-slim@sha256:5adfb0355bbe4a5860c0ba9482cc0b40f573de3749a21a64cf4789391a14fffc",
    "x-netter-source-sha256": {
      "services/openwebui/core.py": "60d52b645a0b2cb0688d92b27ab2ec6f849410f6283ecca5ed7c8c14e9fc0af9",
      "services/openwebui/mcp_api.py": "d2d4f143ed70ecc4db8832891a70467c82c08a2bd3632bd1d2f9d85871881493",
      "services/openwebui/Dockerfile": "2b7464b6e6f64f646c53320c37dedbd019a6111a492e952ccc7b229e52b7a409"
    }
  },
  "servers": [
    {
      "url": "https://{tenant_id}.chat.llm.netter.io",
      "variables": {
        "tenant_id": {
          "default": "00000000-0000-0000-0000-000000000001",
          "description": "UUID della propria azienda; usare l’URL restituito dal portale."
        }
      }
    }
  ],
  "security": [
    {
      "device": []
    },
    {
      "chatSession": []
    }
  ],
  "paths": {
    "/api/v1/auths/": {
      "get": {
        "tags": [
          "auths"
        ],
        "summary": "Get Session User",
        "operationId": "get_session_user_api_v1_auths__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionUserInfoResponse"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/api/v1/auths/update/timezone": {
      "post": {
        "tags": [
          "auths"
        ],
        "summary": "Update Timezone",
        "operationId": "update_timezone_api_v1_auths_update_timezone_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTimezoneForm"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/auths/signout": {
      "post": {
        "tags": [
          "auths"
        ],
        "summary": "Signout",
        "operationId": "signout_api_v1_auths_signout_post",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "const": true
                    },
                    "redirect_url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "status",
                    "redirect_url"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/users/user/settings": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get User Settings By Session User",
        "operationId": "get_user_settings_by_session_user_api_v1_users_user_settings_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "raw",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Raw"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/UserSettings"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Get User Settings By Session User Api V1 Users User Settings Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/users/user/settings/update": {
      "post": {
        "tags": [
          "users"
        ],
        "summary": "Update User Settings By Session User",
        "operationId": "update_user_settings_by_session_user_api_v1_users_user_settings_update_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserSettings"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/users/{user_id}/info": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get User Info By Id",
        "operationId": "get_user_info_by_id_api_v1_users__user_id__info_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserInfoResponse"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti. user_id deve coincidere con l’identità Netter corrente (tenant UUID:user UUID)."
      }
    },
    "/api/v1/users/{user_id}/oauth/sessions": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get User Oauth Sessions By Id",
        "operationId": "get_user_oauth_sessions_by_id_api_v1_users__user_id__oauth_sessions_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "provider": {
                        "type": "string"
                      },
                      "expires_at": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "description": "Unix timestamp in secondi."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [],
                    "additionalProperties": true
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti. Richiede anche ruolo admin upstream, non assegnato dal boundary: normalmente restituisce 403. user_id deve coincidere con l’identità Netter corrente (tenant UUID:user UUID)."
      }
    },
    "/api/v1/users/{user_id}/profile/image": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get User Profile Image By Id",
        "operationId": "get_user_profile_image_by_id_api_v1_users__user_id__profile_image_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "image/*": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "302": {
            "description": "Redirect all’immagine del profilo",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti. user_id deve coincidere con l’identità Netter corrente (tenant UUID:user UUID)."
      }
    },
    "/api/v1/users/{user_id}/active": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get User Active Status By Id",
        "operationId": "get_user_active_status_by_id_api_v1_users__user_id__active_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "active": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "active"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti. user_id deve coincidere con l’identità Netter corrente (tenant UUID:user UUID)."
      }
    },
    "/api/v1/users/{user_id}/sessions/revoke": {
      "post": {
        "tags": [
          "users"
        ],
        "summary": "Revoke User Sessions",
        "operationId": "revoke_user_sessions_api_v1_users__user_id__sessions_revoke_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean",
                  "title": "Response Revoke User Sessions Api V1 Users  User Id  Sessions Revoke Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti. Richiede anche ruolo admin upstream, non assegnato dal boundary: normalmente restituisce 403. user_id deve coincidere con l’identità Netter corrente (tenant UUID:user UUID)."
      }
    },
    "/api/v1/users/{user_id}/update": {
      "post": {
        "tags": [
          "users"
        ],
        "summary": "Update User By Id",
        "operationId": "update_user_by_id_api_v1_users__user_id__update_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpdateForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/UserModel"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Update User By Id Api V1 Users  User Id  Update Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti. Richiede anche ruolo admin upstream, non assegnato dal boundary: normalmente restituisce 403. user_id deve coincidere con l’identità Netter corrente (tenant UUID:user UUID)."
      }
    },
    "/api/v1/users/{user_id}/groups": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get User Groups By Id",
        "operationId": "get_user_groups_by_id_api_v1_users__user_id__groups_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          },
          {
            "name": "include_inherited",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Include Inherited"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JSONValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti. user_id deve coincidere con l’identità Netter corrente (tenant UUID:user UUID)."
      }
    },
    "/api/v1/users/{user_id}/preview": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get User Preview",
        "description": "Show what resources a specific user can access across all their groups. user_id deve coincidere con l’identità Netter corrente (tenant UUID:user UUID).",
        "operationId": "get_user_preview_api_v1_users__user_id__preview_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "user": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ]
                    },
                    "groups": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ]
                      }
                    },
                    "models": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "name"
                            ]
                          }
                        },
                        "total": {
                          "type": "integer"
                        }
                      },
                      "required": [
                        "items",
                        "total"
                      ]
                    },
                    "knowledge": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "name"
                            ]
                          }
                        },
                        "total": {
                          "type": "integer"
                        }
                      },
                      "required": [
                        "items",
                        "total"
                      ]
                    },
                    "tools": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "name"
                            ]
                          }
                        },
                        "total": {
                          "type": "integer"
                        }
                      },
                      "required": [
                        "items",
                        "total"
                      ]
                    }
                  },
                  "required": [
                    "user",
                    "groups",
                    "models",
                    "knowledge",
                    "tools"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/chats/list": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get Session User Chat List",
        "operationId": "get_session_user_chat_list_api_v1_chats_list_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page"
            }
          },
          {
            "name": "include_pinned",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": false,
              "title": "Include Pinned"
            }
          },
          {
            "name": "include_folders",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": false,
              "title": "Include Folders"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "updated_at",
              "title": "Sort By"
            }
          },
          {
            "name": "sort_dir",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "desc",
              "title": "Sort Dir"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChatTitleIdResponse"
                  },
                  "title": "Response Get Session User Chat List Api V1 Chats List Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get Session User Chat List",
        "operationId": "get_session_user_chat_list_api_v1_chats__get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page"
            }
          },
          {
            "name": "include_pinned",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": false,
              "title": "Include Pinned"
            }
          },
          {
            "name": "include_folders",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": false,
              "title": "Include Folders"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "updated_at",
              "title": "Sort By"
            }
          },
          {
            "name": "sort_dir",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "desc",
              "title": "Sort Dir"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChatTitleIdResponse"
                  },
                  "title": "Response Get Session User Chat List Api V1 Chats  Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      },
      "delete": {
        "tags": [
          "chats"
        ],
        "summary": "Delete All User Chats",
        "operationId": "delete_all_user_chats_api_v1_chats__delete",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean",
                  "title": "Response Delete All User Chats Api V1 Chats  Delete"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/chats/read": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Mark Chats Read By User Id",
        "operationId": "mark_chats_read_by_user_id_api_v1_chats_read_post",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "updated_count": {
                      "type": "integer"
                    },
                    "folder_unread_counts": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "integer"
                      }
                    }
                  },
                  "required": [
                    "updated_count",
                    "folder_unread_counts"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/chats/stats/usage": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get Session User Chat Usage Stats",
        "operationId": "get_session_user_chat_usage_stats_api_v1_chats_stats_usage_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "items_per_page",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": 50,
              "title": "Items Per Page"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": 1,
              "title": "Page"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChatUsageStatsListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/new": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Create New Chat",
        "operationId": "create_new_chat_api_v1_chats_new_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChatForm"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ChatResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Create New Chat Api V1 Chats New Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/chats/config": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get Chat Config",
        "operationId": "get_chat_config_api_v1_chats_config_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChatConfigForm"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      },
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Set Chat Config",
        "operationId": "set_chat_config_api_v1_chats_config_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChatConfigForm"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChatConfigForm"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/chats/search": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Search User Chats",
        "operationId": "search_user_chats_api_v1_chats_search_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "text",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Text"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChatTitleIdResponse"
                  },
                  "title": "Response Search User Chats Api V1 Chats Search Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/folder/{folder_id}": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get Chats By Folder Id",
        "operationId": "get_chats_by_folder_id_api_v1_chats_folder__folder_id__get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "folder_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Folder Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChatResponse"
                  },
                  "title": "Response Get Chats By Folder Id Api V1 Chats Folder  Folder Id  Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/folder/{folder_id}/list": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get Chat List By Folder Id",
        "operationId": "get_chat_list_by_folder_id_api_v1_chats_folder__folder_id__list_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "folder_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Folder Id"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "unread_updated_at",
              "title": "Sort By"
            }
          },
          {
            "name": "sort_dir",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "desc",
              "title": "Sort Dir"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChatTitleIdResponse"
                  },
                  "title": "Response Get Chat List By Folder Id Api V1 Chats Folder  Folder Id  List Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/pinned": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get User Pinned Chats",
        "operationId": "get_user_pinned_chats_api_v1_chats_pinned_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ChatTitleIdResponse"
                  },
                  "type": "array",
                  "title": "Response Get User Pinned Chats Api V1 Chats Pinned Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/api/v1/chats/all": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get User Chats",
        "operationId": "get_user_chats_api_v1_chats_all_get",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/x-ndjson": {
                "schema": {
                  "type": "string",
                  "description": "Esportazione NDJSON: una chat nativa per riga, streaming senza array JSON."
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/api/v1/chats/all/archived": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get User Archived Chats",
        "operationId": "get_user_archived_chats_api_v1_chats_all_archived_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ChatResponse"
                  },
                  "type": "array",
                  "title": "Response Get User Archived Chats Api V1 Chats All Archived Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/api/v1/chats/all/tags": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get All User Tags",
        "operationId": "get_all_user_tags_api_v1_chats_all_tags_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/TagModel"
                  },
                  "type": "array",
                  "title": "Response Get All User Tags Api V1 Chats All Tags Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/api/v1/chats/archived": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get Archived Session User Chat List",
        "operationId": "get_archived_session_user_chat_list_api_v1_chats_archived_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page"
            }
          },
          {
            "name": "query",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Query"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Order By"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Direction"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChatTitleIdResponse"
                  },
                  "title": "Response Get Archived Session User Chat List Api V1 Chats Archived Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/archived/count": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get Archived Session User Chat Count",
        "operationId": "get_archived_session_user_chat_count_api_v1_chats_archived_count_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "title": "Response Get Archived Session User Chat Count Api V1 Chats Archived Count Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/api/v1/chats/archive/all": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Archive All Chats",
        "operationId": "archive_all_chats_api_v1_chats_archive_all_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean",
                  "title": "Response Archive All Chats Api V1 Chats Archive All Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/chats/unarchive/all": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Unarchive All Chats",
        "operationId": "unarchive_all_chats_api_v1_chats_unarchive_all_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean",
                  "title": "Response Unarchive All Chats Api V1 Chats Unarchive All Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/chats/tags": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Get User Chat List By Tag Name",
        "operationId": "get_user_chat_list_by_tag_name_api_v1_chats_tags_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagFilterForm"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ChatTitleIdResponse"
                  },
                  "type": "array",
                  "title": "Response Get User Chat List By Tag Name Api V1 Chats Tags Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/chats/{id}/compact": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Compact Chat By Id",
        "operationId": "compact_chat_by_id_api_v1_chats__id__compact_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/CompactChatForm"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Form Data"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "compacted": {
                      "type": "boolean"
                    },
                    "reason": {
                      "type": "string"
                    },
                    "summary": {
                      "type": "string"
                    },
                    "dropped_messages": {
                      "type": "integer"
                    },
                    "context_usage": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/JSONValue"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "ok",
                    "compacted"
                  ],
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/{id}": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get Chat By Id",
        "operationId": "get_chat_by_id_api_v1_chats__id__get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ChatResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Get Chat By Id Api V1 Chats  Id  Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      },
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Update Chat By Id",
        "operationId": "update_chat_by_id_api_v1_chats__id__post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChatForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ChatResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Update Chat By Id Api V1 Chats  Id  Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      },
      "delete": {
        "tags": [
          "chats"
        ],
        "summary": "Delete Chat By Id",
        "operationId": "delete_chat_by_id_api_v1_chats__id__delete",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean",
                  "title": "Response Delete Chat By Id Api V1 Chats  Id  Delete"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/{id}/messages/{message_id}": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Update Chat Message By Id",
        "operationId": "update_chat_message_by_id_api_v1_chats__id__messages__message_id__post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "message_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Message Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/open_webui__routers__chats__MessageForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ChatResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Update Chat Message By Id Api V1 Chats  Id  Messages  Message Id  Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      },
      "delete": {
        "tags": [
          "chats"
        ],
        "summary": "Delete Chat Message By Id",
        "operationId": "delete_chat_message_by_id_api_v1_chats__id__messages__message_id__delete",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "message_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Message Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ChatResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Delete Chat Message By Id Api V1 Chats  Id  Messages  Message Id  Delete"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/{id}/messages/{message_id}/event": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Send Chat Message Event By Id",
        "operationId": "send_chat_message_event_by_id_api_v1_chats__id__messages__message_id__event_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "message_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Message Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Send Chat Message Event By Id Api V1 Chats  Id  Messages  Message Id  Event Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/{id}/pinned": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get Pinned Status By Id",
        "operationId": "get_pinned_status_by_id_api_v1_chats__id__pinned_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Get Pinned Status By Id Api V1 Chats  Id  Pinned Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/{id}/pin": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Pin Chat By Id",
        "operationId": "pin_chat_by_id_api_v1_chats__id__pin_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ChatResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Pin Chat By Id Api V1 Chats  Id  Pin Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/{id}/fork": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Fork Chat By Id",
        "operationId": "fork_chat_by_id_api_v1_chats__id__fork_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/ForkForm"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Form Data"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ChatResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Fork Chat By Id Api V1 Chats  Id  Fork Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/{id}/archive": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Archive Chat By Id",
        "operationId": "archive_chat_by_id_api_v1_chats__id__archive_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ChatResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Archive Chat By Id Api V1 Chats  Id  Archive Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/{id}/unread": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Mark Chat Unread By Id",
        "operationId": "mark_chat_unread_by_id_api_v1_chats__id__unread_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "chat_id": {
                      "type": "string"
                    },
                    "last_read_at": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "description": "Unix timestamp in secondi."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "folder_id": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "folder_unread_counts": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "integer"
                      }
                    }
                  },
                  "required": [
                    "chat_id",
                    "last_read_at",
                    "folder_id",
                    "folder_unread_counts"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/{id}/folder": {
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Update Chat Folder Id By Id",
        "operationId": "update_chat_folder_id_by_id_api_v1_chats__id__folder_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChatFolderIdForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ChatResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Update Chat Folder Id By Id Api V1 Chats  Id  Folder Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/chats/{id}/tags": {
      "get": {
        "tags": [
          "chats"
        ],
        "summary": "Get Chat Tags By Id",
        "operationId": "get_chat_tags_by_id_api_v1_chats__id__tags_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagModel"
                  },
                  "title": "Response Get Chat Tags By Id Api V1 Chats  Id  Tags Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      },
      "post": {
        "tags": [
          "chats"
        ],
        "summary": "Add Tag By Id And Tag Name",
        "operationId": "add_tag_by_id_and_tag_name_api_v1_chats__id__tags_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagModel"
                  },
                  "title": "Response Add Tag By Id And Tag Name Api V1 Chats  Id  Tags Post"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      },
      "delete": {
        "tags": [
          "chats"
        ],
        "summary": "Delete Tag By Id And Tag Name",
        "operationId": "delete_tag_by_id_and_tag_name_api_v1_chats__id__tags_delete",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagModel"
                  },
                  "title": "Response Delete Tag By Id And Tag Name Api V1 Chats  Id  Tags Delete"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/models/model/profile/image": {
      "get": {
        "tags": [
          "models"
        ],
        "summary": "Get Model Profile Image",
        "operationId": "get_model_profile_image_api_v1_models_model_profile_image_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "image/*": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "302": {
            "description": "Redirect all’immagine del profilo",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/folders/": {
      "get": {
        "tags": [
          "folders"
        ],
        "summary": "Get Folders",
        "operationId": "get_folders_api_v1_folders__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/FolderNameIdResponse"
                  },
                  "type": "array",
                  "title": "Response Get Folders Api V1 Folders  Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      },
      "post": {
        "tags": [
          "folders"
        ],
        "summary": "Create Folder",
        "operationId": "create_folder_api_v1_folders__post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FolderForm"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderModel"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/folders/{id}": {
      "get": {
        "tags": [
          "folders"
        ],
        "summary": "Get Folder By Id",
        "operationId": "get_folder_by_id_api_v1_folders__id__get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderResponse"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      },
      "delete": {
        "tags": [
          "folders"
        ],
        "summary": "Delete Folder By Id",
        "operationId": "delete_folder_by_id_api_v1_folders__id__delete",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "delete_contents",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": true,
              "title": "Delete Contents"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/folders/{id}/update": {
      "post": {
        "tags": [
          "folders"
        ],
        "summary": "Update Folder Name By Id",
        "operationId": "update_folder_name_by_id_api_v1_folders__id__update_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FolderUpdateForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderModel"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/folders/{id}/update/parent": {
      "post": {
        "tags": [
          "folders"
        ],
        "summary": "Update Folder Parent Id By Id",
        "operationId": "update_folder_parent_id_by_id_api_v1_folders__id__update_parent_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FolderParentIdForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderModel"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/folders/{id}/update/expanded": {
      "post": {
        "tags": [
          "folders"
        ],
        "summary": "Update Folder Is Expanded By Id",
        "operationId": "update_folder_is_expanded_by_id_api_v1_folders__id__update_expanded_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FolderIsExpandedForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderModel"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/folders/{id}/access/update": {
      "post": {
        "tags": [
          "folders"
        ],
        "summary": "Update Folder Access By Id",
        "operationId": "update_folder_access_by_id_api_v1_folders__id__access_update_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FolderAccessGrantsForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderResponse"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/folders/{id}/read": {
      "post": {
        "tags": [
          "folders"
        ],
        "summary": "Mark Folder Chats Read By Id",
        "operationId": "mark_folder_chats_read_by_id_api_v1_folders__id__read_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "folder_id": {
                      "type": "string"
                    },
                    "folder_ids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "updated_count": {
                      "type": "integer"
                    },
                    "folder_unread_counts": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "integer"
                      }
                    }
                  },
                  "required": [
                    "folder_id",
                    "folder_ids",
                    "updated_count",
                    "folder_unread_counts"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/files/": {
      "post": {
        "tags": [
          "files"
        ],
        "summary": "Upload File",
        "operationId": "upload_file_api_v1_files__post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "Massimo 20 MiB; memorizzazione cifrata Netter."
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileModel"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      },
      "get": {
        "tags": [
          "files"
        ],
        "summary": "List Files",
        "operationId": "list_files_api_v1_files__get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "description": "Page number (1-indexed)",
              "default": 1,
              "title": "Page"
            },
            "description": "Page number (1-indexed)"
          },
          {
            "name": "content",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true,
              "title": "Content"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/files/search": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "Search Files",
        "description": "Search for files by filename with support for wildcard patterns.\nUses SQL-based filtering with pagination for better performance.",
        "operationId": "search_files_api_v1_files_search_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "filename",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Filename pattern to search for. Supports wildcards such as '*.txt'",
              "title": "Filename"
            },
            "description": "Filename pattern to search for. Supports wildcards such as '*.txt'"
          },
          {
            "name": "content",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true,
              "title": "Content"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Number of files to skip",
              "default": 0,
              "title": "Skip"
            },
            "description": "Number of files to skip"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000,
              "minimum": 1,
              "description": "Maximum number of files to return",
              "default": 100,
              "title": "Limit"
            },
            "description": "Maximum number of files to return"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FileModelResponse"
                  },
                  "title": "Response Search Files Api V1 Files Search Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/files/count": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "Count Files",
        "operationId": "count_files_api_v1_files_count_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "title": "Response Count Files Api V1 Files Count Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/api/v1/files/{id}": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "Get File By Id",
        "operationId": "get_file_by_id_api_v1_files__id__get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/FileModel"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Get File By Id Api V1 Files  Id  Get"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      },
      "delete": {
        "tags": [
          "files"
        ],
        "summary": "Delete File By Id",
        "operationId": "delete_file_by_id_api_v1_files__id__delete",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/files/{id}/process/status": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "Get File Process Status",
        "operationId": "get_file_process_status_api_v1_files__id__process_status_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "stream",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Stream"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              },
              "text/event-stream": {
                "schema": {
                  "type": "string",
                  "description": "Stream degli aggiornamenti di elaborazione del file."
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/files/{id}/data/content": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "Get File Data Content By Id",
        "operationId": "get_file_data_content_by_id_api_v1_files__id__data_content_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "content"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/files/{id}/content": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "Get File Content By Id",
        "operationId": "get_file_content_by_id_api_v1_files__id__content_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "attachment",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Attachment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/files/{id}/content/html": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "Get Html File Content By Id",
        "operationId": "get_html_file_content_by_id_api_v1_files__id__content_html_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/files/{id}/content/{file_name}": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "Get File Content By Id",
        "operationId": "get_file_content_by_id_api_v1_files__id__content__file_name__get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "file_name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/files/{id}/rename": {
      "post": {
        "tags": [
          "files"
        ],
        "summary": "Rename File By Id",
        "operationId": "rename_file_by_id_api_v1_files__id__rename_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileRenameForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileModel"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/v1/models": {
      "get": {
        "summary": "Get Models",
        "operationId": "get_models_api_v1_models_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "refresh",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Refresh"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelList"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/models": {
      "get": {
        "summary": "Get Models",
        "operationId": "get_models_api_models_get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "refresh",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Refresh"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelList"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/models/base": {
      "get": {
        "summary": "Get Base Models",
        "operationId": "get_base_models_api_models_base_get",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelList"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/api/v1/chat/completions": {
      "post": {
        "summary": "Chat Completion",
        "operationId": "chat_completion_api_v1_chat_completions_post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NativeChatRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/GatewayChatResponse"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "boolean"
                        },
                        "chat_id": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "paused": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "status",
                        "chat_id"
                      ]
                    }
                  ]
                }
              },
              "text/event-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ServerSentEvents"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/chat/completions": {
      "post": {
        "summary": "Chat Completion",
        "operationId": "chat_completion_api_chat_completions_post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NativeChatRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/GatewayChatResponse"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "boolean"
                        },
                        "chat_id": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "paused": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "status",
                        "chat_id"
                      ]
                    }
                  ]
                }
              },
              "text/event-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ServerSentEvents"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    },
    "/api/v1/chats/{id}/messages/{message_id}/resolve": {
      "post": {
        "summary": "Resolve Chat Message Tool Call",
        "operationId": "resolve_chat_message_tool_call_api_v1_chats__id__messages__message_id__resolve_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Id"
            }
          },
          {
            "name": "message_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Message Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResolveToolCallForm"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean"
                    },
                    "chat_id": {
                      "type": "string"
                    },
                    "message_id": {
                      "type": "string"
                    },
                    "task_ids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "status",
                    "chat_id",
                    "message_id"
                  ],
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/tasks/stop/{task_id}": {
      "post": {
        "summary": "Stop Task Endpoint",
        "operationId": "stop_task_endpoint_api_tasks_stop__task_id__post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Task Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean"
                    }
                  },
                  "required": [],
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/tasks": {
      "get": {
        "summary": "List Tasks Endpoint",
        "operationId": "list_tasks_endpoint_api_tasks_get",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tasks": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "tasks"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/api/tasks/chat/{chat_id}": {
      "get": {
        "summary": "List Tasks By Chat Id Endpoint",
        "operationId": "list_tasks_by_chat_id_endpoint_api_tasks_chat__chat_id__get",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "chat_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Chat Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "task_ids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [],
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/tasks/chat/{chat_id}/stop": {
      "post": {
        "summary": "Stop Tasks By Chat Id Endpoint",
        "operationId": "stop_tasks_by_chat_id_endpoint_api_tasks_chat__chat_id__stop_post",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "parameters": [
          {
            "name": "chat_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Chat Id"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ],
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean"
                    }
                  },
                  "required": [],
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti."
      }
    },
    "/api/config": {
      "get": {
        "summary": "Get App Config",
        "operationId": "get_app_config_api_config_get",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean"
                    },
                    "name": {
                      "type": "string"
                    },
                    "version": {
                      "type": "string"
                    },
                    "default_locale": {
                      "type": "string"
                    },
                    "features": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "boolean"
                      }
                    },
                    "oauth": {
                      "type": "object",
                      "properties": {
                        "providers": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          }
                        },
                        "auto_redirect": {
                          "anyOf": [
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": []
                    },
                    "i18n": {
                      "type": "object",
                      "additionalProperties": {
                        "$ref": "#/components/schemas/JSONValue"
                      }
                    }
                  },
                  "required": [],
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/api/version": {
      "get": {
        "summary": "Get App Version",
        "operationId": "get_app_version_api_version_get",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "version": {
                      "type": "string"
                    },
                    "deployment_id": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "version",
                    "deployment_id"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [],
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/health": {
      "get": {
        "operationId": "get_health",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "ok"
                    },
                    "service": {
                      "type": "string",
                      "const": "openwebui"
                    },
                    "version": {
                      "type": "string",
                      "const": "0.12.3"
                    }
                  },
                  "required": [
                    "status",
                    "service",
                    "version"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [],
        "summary": "get health",
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/health/db": {
      "get": {
        "operationId": "get_health_db",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [],
        "summary": "get health db",
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/ready": {
      "get": {
        "operationId": "get_ready",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get ready",
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/api/v1/skills": {
      "get": {
        "operationId": "get_api_v1_skills",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "maxItems": 0,
                  "items": {
                    "$ref": "#/components/schemas/JSONValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "Funzione disabilitata nell’integrazione Netter: restituisce sempre [].",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get api v1 skills",
        "parameters": []
      }
    },
    "/api/v1/prompts": {
      "get": {
        "operationId": "get_api_v1_prompts",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "maxItems": 0,
                  "items": {
                    "$ref": "#/components/schemas/JSONValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "Funzione disabilitata nell’integrazione Netter: restituisce sempre [].",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get api v1 prompts",
        "parameters": []
      }
    },
    "/api/v1/knowledge": {
      "get": {
        "operationId": "get_api_v1_knowledge",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "maxItems": 0,
                  "items": {
                    "$ref": "#/components/schemas/JSONValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "Funzione disabilitata nell’integrazione Netter: restituisce sempre [].",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get api v1 knowledge",
        "parameters": []
      }
    },
    "/api/v1/groups/user": {
      "get": {
        "operationId": "get_api_v1_groups_user",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "maxItems": 0,
                  "items": {
                    "$ref": "#/components/schemas/JSONValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "Funzione disabilitata nell’integrazione Netter: restituisce sempre [].",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get api v1 groups user",
        "parameters": []
      }
    },
    "/api/v1/tools": {
      "get": {
        "operationId": "get_api_v1_tools",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "maxItems": 0,
                  "items": {
                    "$ref": "#/components/schemas/JSONValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "Funzione disabilitata nell’integrazione Netter: restituisce sempre [].",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get api v1 tools",
        "parameters": []
      }
    },
    "/api/v1/functions": {
      "get": {
        "operationId": "get_api_v1_functions",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "maxItems": 0,
                  "items": {
                    "$ref": "#/components/schemas/JSONValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "Funzione disabilitata nell’integrazione Netter: restituisce sempre [].",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get api v1 functions",
        "parameters": []
      }
    },
    "/api/v1/notes/pinned": {
      "get": {
        "operationId": "get_api_v1_notes_pinned",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "maxItems": 0,
                  "items": {
                    "$ref": "#/components/schemas/JSONValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "Funzione disabilitata nell’integrazione Netter: restituisce sempre [].",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get api v1 notes pinned",
        "parameters": []
      }
    },
    "/api/v1/channels": {
      "get": {
        "operationId": "get_api_v1_channels",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "maxItems": 0,
                  "items": {
                    "$ref": "#/components/schemas/JSONValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "Funzione disabilitata nell’integrazione Netter: restituisce sempre [].",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get api v1 channels",
        "parameters": []
      }
    },
    "/api/v1/terminals": {
      "get": {
        "operationId": "get_api_v1_terminals",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "maxItems": 0,
                  "items": {
                    "$ref": "#/components/schemas/JSONValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "Funzione disabilitata nell’integrazione Netter: restituisce sempre [].",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get api v1 terminals",
        "parameters": []
      }
    },
    "/api/v1/folders/shared": {
      "get": {
        "operationId": "get_api_v1_folders_shared",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "maxItems": 0,
                  "items": {
                    "$ref": "#/components/schemas/JSONValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "Funzione disabilitata nell’integrazione Netter: restituisce sempre [].",
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get api v1 folders shared",
        "parameters": []
      }
    },
    "/api/v1/configs/banners": {
      "get": {
        "operationId": "get_api_v1_configs_banners",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "const": "netter-context"
                      },
                      "type": {
                        "type": "string",
                        "const": "info"
                      },
                      "title": {
                        "type": "null"
                      },
                      "content": {
                        "type": "string"
                      },
                      "dismissible": {
                        "type": "boolean",
                        "const": true
                      },
                      "timestamp": {
                        "type": "integer",
                        "const": 0
                      }
                    },
                    "required": [
                      "id",
                      "type",
                      "title",
                      "content",
                      "dismissible",
                      "timestamp"
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "get api v1 configs banners",
        "description": "API nativa Open WebUI 0.12.3 entro il boundary Netter. Tenant, utente, plafond, scadenza e scope del token sono verificati sul server; la presenza nel contratto non sostituisce i permessi richiesti.",
        "parameters": []
      }
    },
    "/netter/bootstrap": {
      "post": {
        "operationId": "post_netter_bootstrap",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "security": [],
        "description": "Scambia il ticket monouso di /api/v1/openwebui/access. Origin deve essere esattamente il portale Netter; crea un cookie HttpOnly Secure e inizializza l’accesso nel browser. Mai inserire ticket/token in URL.",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "const": "https://admin.llm.netter.io"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "ticket": {
                    "type": "string"
                  }
                },
                "required": [
                  "ticket"
                ]
              }
            }
          }
        },
        "summary": "post netter bootstrap"
      }
    },
    "/mcp": {
      "post": {
        "operationId": "post_mcp",
        "responses": {
          "200": {
            "description": "Operazione completata",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/MCPResult"
                    },
                    {
                      "$ref": "#/components/schemas/MCPMethodError"
                    }
                  ]
                }
              }
            }
          },
          "202": {
            "description": "Notifica senza id: nessun corpo"
          },
          "401": {
            "description": "Accesso Netter richiesto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "403": {
            "description": "Scope, Origin o funzione non consentiti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "404": {
            "description": "Risorsa assente o non visibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "405": {
            "description": "Metodo HTTP non consentito; Allow: POST"
          },
          "409": {
            "description": "Revisione o generazione già inviata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "429": {
            "description": "Limite richieste raggiunto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          },
          "503": {
            "description": "Servizio temporaneamente non disponibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoundaryError"
                }
              }
            }
          }
        },
        "description": "MCP stateless su HTTP. Conflitti, errori di input, permessi strumento ed esiti incerti sono tools/call result.isError=true (HTTP 200); autenticazione del boundary usa HTTP 401/403. Non ritentare generazioni incerte con un nuovo operation_id.",
        "x-mcp-tools": [
          {
            "name": "chat_list",
            "description": "Elenca le tue conversazioni nel workspace corrente.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "offset": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "required": [],
              "additionalProperties": false
            },
            "x-result-schema": {
              "$ref": "#/components/schemas/MCPChatList"
            }
          },
          {
            "name": "chat_search",
            "description": "Cerca nelle tue conversazioni autorizzate.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "query": {
                  "type": "string"
                },
                "offset": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "required": [
                "query"
              ],
              "additionalProperties": false
            },
            "x-result-schema": {
              "$ref": "#/components/schemas/MCPChatList"
            }
          },
          {
            "name": "chat_get",
            "description": "Legge una conversazione e la sua revisione corrente.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "chat_id": {
                  "type": "string"
                }
              },
              "required": [
                "chat_id"
              ],
              "additionalProperties": false
            },
            "x-result-schema": {
              "$ref": "#/components/schemas/MCPChat"
            }
          },
          {
            "name": "chat_create",
            "description": "Crea una conversazione Open WebUI.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string"
                },
                "model": {
                  "type": "string"
                },
                "operation_id": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "required": [
                "operation_id"
              ],
              "additionalProperties": false
            },
            "x-result-schema": {
              "$ref": "#/components/schemas/MCPChat"
            }
          },
          {
            "name": "chat_append",
            "description": "Aggiunge un messaggio alla revisione indicata. Non esegue inferenza.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "chat_id": {
                  "type": "string"
                },
                "expected_revision": {
                  "type": "integer",
                  "minimum": 0
                },
                "operation_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "content": {
                  "type": "string"
                },
                "role": {
                  "enum": [
                    "user",
                    "assistant"
                  ]
                }
              },
              "required": [
                "chat_id",
                "expected_revision",
                "operation_id",
                "content"
              ],
              "additionalProperties": false
            },
            "x-result-schema": {
              "$ref": "#/components/schemas/MCPChat"
            }
          },
          {
            "name": "chat_continue",
            "description": "Invia un messaggio al modello, usa il plafond Netter e salva la risposta nella conversazione.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "chat_id": {
                  "type": "string"
                },
                "expected_revision": {
                  "type": "integer",
                  "minimum": 0
                },
                "operation_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "content": {
                  "type": "string"
                },
                "model": {
                  "type": "string"
                }
              },
              "required": [
                "chat_id",
                "expected_revision",
                "operation_id",
                "content"
              ],
              "additionalProperties": false
            },
            "x-result-schema": {
              "$ref": "#/components/schemas/MCPContinueResult"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MCPRequest"
              }
            }
          }
        },
        "security": [
          {
            "device": []
          },
          {
            "chatSession": []
          }
        ],
        "summary": "post mcp",
        "parameters": [
          {
            "name": "Origin",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Se presente deve essere https://admin.llm.netter.io oppure l’origine HTTPS del workspace. Può essere omesso dai client dispositivo/MCP."
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "device": {
        "type": "http",
        "scheme": "bearer",
        "description": "Token personale di dispositivo Netter, generato nel portale. Non usare la chiave inferenza ni_owui_. Scope chat:read per letture, chat:write per modifiche, chat:infer per generare; MCP verifica ogni strumento."
      },
      "chatSession": {
        "type": "apiKey",
        "in": "cookie",
        "name": "netter_chat_session",
        "description": "Sessione browser Netter creata da bootstrap; cookie HttpOnly Secure."
      }
    },
    "schemas": {
      "BoundaryError": {
        "type": "object",
        "properties": {
          "detail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/JSONValue"
                }
              }
            ]
          }
        },
        "required": [
          "detail"
        ]
      },
      "ChatChunk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "type": "string",
            "const": "chat.completion.chunk"
          },
          "created": {
            "type": "integer"
          },
          "model": {
            "$ref": "#/components/schemas/Profile"
          },
          "choices": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "integer"
                },
                "delta": {
                  "type": "object",
                  "properties": {
                    "role": {
                      "type": "string"
                    },
                    "content": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "tool_calls": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "index": {
                            "type": "integer"
                          },
                          "id": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string"
                          },
                          "function": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "arguments": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "required": [
                          "index"
                        ]
                      }
                    }
                  },
                  "additionalProperties": true
                },
                "finish_reason": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "delta"
              ]
            }
          },
          "usage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Usage"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "object",
          "choices"
        ],
        "additionalProperties": true
      },
      "ChatConfigForm": {
        "properties": {
          "CONTEXT_COMPACTION_MODEL": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Context Compaction Model",
            "default": ""
          },
          "ENABLE_CONTEXT_COMPACTION": {
            "type": "boolean",
            "title": "Enable Context Compaction"
          },
          "CONTEXT_COMPACTION_TOKEN_THRESHOLD": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Context Compaction Token Threshold"
          },
          "CONTEXT_COMPACTION_TOKEN_CAP": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Context Compaction Token Cap"
          },
          "CONTEXT_COMPACTION_RETENTION_PERCENTAGE": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Context Compaction Retention Percentage"
          },
          "CONTEXT_COMPACTION_PROMPT_TEMPLATE": {
            "type": "string",
            "title": "Context Compaction Prompt Template"
          },
          "ENABLE_TOOL_PERMISSIONS": {
            "type": "boolean",
            "title": "Enable Tool Permissions",
            "default": false
          },
          "ENABLE_TOOL_SEARCH": {
            "type": "boolean",
            "title": "Enable Tool Search",
            "default": false
          },
          "TOOL_SEARCH_DEFER_THRESHOLD": {
            "type": "integer",
            "title": "Tool Search Defer Threshold",
            "default": 400
          },
          "TOOL_SEARCH_ALWAYS_LOADED": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tool Search Always Loaded",
            "default": []
          },
          "TOOL_SEARCH_DEFER_BUILTIN_TOOLS": {
            "type": "boolean",
            "title": "Tool Search Defer Builtin Tools",
            "default": true
          }
        },
        "type": "object",
        "required": [
          "ENABLE_CONTEXT_COMPACTION",
          "CONTEXT_COMPACTION_PROMPT_TEMPLATE"
        ],
        "title": "ChatConfigForm"
      },
      "ChatDocument": {
        "type": "object",
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "history": {
            "type": "object",
            "properties": {
              "messages": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/components/schemas/ChatHistoryMessage"
                }
              },
              "currentId": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "messages",
              "currentId"
            ]
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatHistoryMessage"
            }
          },
          "params": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/JSONValue"
            }
          },
          "timestamp": {
            "type": "integer",
            "description": "Unix timestamp in secondi."
          }
        },
        "required": [],
        "additionalProperties": true,
        "description": "Documento nativo Open WebUI: history contiene l’albero dei messaggi, messages il ramo corrente. I contenuti sono cifrati da Netter in PostgreSQL. La lettura non rinnova la scadenza."
      },
      "ChatFolderIdForm": {
        "properties": {
          "folder_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Folder Id"
          }
        },
        "type": "object",
        "title": "ChatFolderIdForm"
      },
      "ChatForm": {
        "properties": {
          "chat": {
            "$ref": "#/components/schemas/ChatDocument"
          },
          "variables": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Variables"
          },
          "folder_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Folder Id"
          }
        },
        "type": "object",
        "required": [
          "chat"
        ],
        "title": "ChatForm"
      },
      "ChatHistoryMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "user",
              "assistant",
              "system",
              "tool"
            ]
          },
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ContentPart"
                }
              }
            ]
          },
          "parentId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "childrenIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "timestamp": {
            "type": "integer",
            "description": "Unix timestamp in secondi."
          },
          "done": {
            "type": "boolean"
          },
          "model": {
            "type": "string"
          },
          "models": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JSONValue"
            }
          },
          "info": {
            "$ref": "#/components/schemas/JSONValue"
          }
        },
        "required": [
          "id",
          "role",
          "content"
        ],
        "additionalProperties": true
      },
      "ChatMessage": {
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "system",
              "developer",
              "user",
              "assistant",
              "tool"
            ]
          },
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ContentPart"
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "tool_call_id": {
            "type": "string"
          },
          "tool_calls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolCall"
            }
          }
        },
        "required": [
          "role"
        ],
        "additionalProperties": true
      },
      "ChatResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "chat": {
            "$ref": "#/components/schemas/ChatDocument"
          },
          "updated_at": {
            "type": "integer",
            "title": "Updated At"
          },
          "created_at": {
            "type": "integer",
            "title": "Created At"
          },
          "share_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Share Id"
          },
          "archived": {
            "type": "boolean",
            "title": "Archived"
          },
          "pinned": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pinned",
            "default": false
          },
          "meta": {
            "additionalProperties": true,
            "type": "object",
            "title": "Meta",
            "default": {}
          },
          "variables": {
            "additionalProperties": true,
            "type": "object",
            "title": "Variables",
            "default": {}
          },
          "folder_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Folder Id"
          },
          "tasks": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tasks"
          },
          "summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Summary"
          },
          "current_message_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Message Id"
          },
          "context_usage": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Context Usage"
          }
        },
        "type": "object",
        "required": [
          "id",
          "user_id",
          "title",
          "chat",
          "updated_at",
          "created_at",
          "archived"
        ],
        "title": "ChatResponse"
      },
      "ChatTitleIdResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "updated_at": {
            "type": "integer",
            "title": "Updated At"
          },
          "created_at": {
            "type": "integer",
            "title": "Created At"
          },
          "last_read_at": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Read At"
          },
          "snippet": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Snippet"
          },
          "active": {
            "type": "boolean",
            "title": "Active",
            "default": false
          },
          "archived": {
            "type": "boolean",
            "title": "Archived",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "id",
          "title",
          "updated_at",
          "created_at"
        ],
        "title": "ChatTitleIdResponse"
      },
      "ChatTool": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "function"
          },
          "function": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "parameters": {
                "type": "object",
                "additionalProperties": true,
                "description": "JSON Schema degli argomenti dello strumento eseguito dal client."
              },
              "strict": {
                "type": "boolean"
              }
            },
            "required": [
              "name"
            ]
          }
        },
        "required": [
          "type",
          "function"
        ]
      },
      "ChatUsageStatsListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ChatUsageStatsResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "required": [
          "items",
          "total"
        ],
        "title": "ChatUsageStatsListResponse"
      },
      "ChatUsageStatsResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "models": {
            "additionalProperties": true,
            "type": "object",
            "title": "Models",
            "default": {}
          },
          "message_count": {
            "type": "integer",
            "title": "Message Count"
          },
          "history_models": {
            "additionalProperties": true,
            "type": "object",
            "title": "History Models",
            "default": {}
          },
          "history_message_count": {
            "type": "integer",
            "title": "History Message Count"
          },
          "history_user_message_count": {
            "type": "integer",
            "title": "History User Message Count"
          },
          "history_assistant_message_count": {
            "type": "integer",
            "title": "History Assistant Message Count"
          },
          "average_response_time": {
            "type": "number",
            "title": "Average Response Time"
          },
          "average_user_message_content_length": {
            "type": "number",
            "title": "Average User Message Content Length"
          },
          "average_assistant_message_content_length": {
            "type": "number",
            "title": "Average Assistant Message Content Length"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags",
            "default": []
          },
          "last_message_at": {
            "type": "integer",
            "title": "Last Message At"
          },
          "updated_at": {
            "type": "integer",
            "title": "Updated At"
          },
          "created_at": {
            "type": "integer",
            "title": "Created At"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "required": [
          "id",
          "message_count",
          "history_message_count",
          "history_user_message_count",
          "history_assistant_message_count",
          "average_response_time",
          "average_user_message_content_length",
          "average_assistant_message_content_length",
          "last_message_at",
          "updated_at",
          "created_at"
        ],
        "title": "ChatUsageStatsResponse"
      },
      "CompactChatForm": {
        "properties": {
          "model": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Model"
          }
        },
        "type": "object",
        "title": "CompactChatForm"
      },
      "ContentPart": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "text",
                  "input_text",
                  "output_text"
                ]
              },
              "text": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "text"
            ]
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "image_url"
              },
              "image_url": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "URL immagine o data URI. I byte immagine non passano dal filtro PII."
                  },
                  "detail": {
                    "type": "string",
                    "enum": [
                      "auto",
                      "low",
                      "high"
                    ]
                  }
                },
                "required": [
                  "url"
                ]
              }
            },
            "required": [
              "type",
              "image_url"
            ]
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "input_image"
              },
              "image_url": {
                "type": "string"
              },
              "file_id": {
                "type": "string"
              },
              "detail": {
                "type": "string",
                "enum": [
                  "auto",
                  "low",
                  "high"
                ]
              }
            },
            "required": [
              "type"
            ],
            "description": "Usare image_url oppure file_id Netter."
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "input_file",
                  "document"
                ]
              },
              "file_id": {
                "type": "string"
              },
              "file_data": {
                "type": "string"
              },
              "filename": {
                "type": "string"
              },
              "source": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string"
                  },
                  "data": {
                    "type": "string"
                  },
                  "media_type": {
                    "type": "string"
                  }
                }
              }
            },
            "required": [
              "type"
            ],
            "description": "Usare file_id Netter oppure dati base64. Il documento viene estratto localmente; URL remoti non supportati."
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "input_audio"
              },
              "input_audio": {
                "type": "object",
                "properties": {
                  "data": {
                    "type": "string",
                    "contentEncoding": "base64"
                  },
                  "format": {
                    "type": "string"
                  }
                },
                "required": [
                  "data",
                  "format"
                ]
              }
            },
            "required": [
              "type",
              "input_audio"
            ]
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "image"
              },
              "source": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "base64",
                      "url"
                    ]
                  },
                  "media_type": {
                    "type": "string"
                  },
                  "data": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string"
                  },
                  "file_id": {
                    "type": "string"
                  }
                },
                "required": [
                  "type"
                ]
              }
            },
            "required": [
              "type",
              "source"
            ]
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "tool_use"
              },
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "input": {
                "$ref": "#/components/schemas/JSONValue"
              }
            },
            "required": [
              "type",
              "id",
              "name",
              "input"
            ]
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "tool_result"
              },
              "tool_use_id": {
                "type": "string"
              },
              "content": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/ContentPart"
                    }
                  }
                ]
              },
              "is_error": {
                "type": "boolean"
              }
            },
            "required": [
              "type",
              "tool_use_id",
              "content"
            ]
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "thinking"
              },
              "thinking": {
                "type": "string"
              },
              "signature": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "thinking"
            ]
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "redacted_thinking"
              },
              "data": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "data"
            ]
          }
        ],
        "description": "Blocchi nativi del protocollo selezionato; usare solo i tipi supportati dal modello e dalla route. Firme e blocchi opachi vanno reinviati invariati."
      },
      "EventForm": {
        "properties": {
          "type": {
            "type": "string",
            "title": "Type"
          },
          "data": {
            "additionalProperties": true,
            "type": "object",
            "title": "Data"
          }
        },
        "type": "object",
        "required": [
          "type",
          "data"
        ],
        "title": "EventForm"
      },
      "FileListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/FileModelResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total"
        ],
        "title": "FileListResponse"
      },
      "FileMeta": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "content_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Type"
          },
          "size": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Size"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "title": "FileMeta"
      },
      "FileModel": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hash"
          },
          "filename": {
            "type": "string",
            "title": "Filename"
          },
          "path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Path"
          },
          "data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "user_id",
          "filename",
          "created_at",
          "updated_at"
        ],
        "title": "FileModel"
      },
      "FileModelResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hash"
          },
          "filename": {
            "type": "string",
            "title": "Filename"
          },
          "data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FileMeta"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "integer",
            "title": "Created At"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "required": [
          "id",
          "user_id",
          "filename",
          "created_at"
        ],
        "title": "FileModelResponse"
      },
      "FileRenameForm": {
        "properties": {
          "filename": {
            "type": "string",
            "title": "Filename"
          }
        },
        "type": "object",
        "required": [
          "filename"
        ],
        "title": "FileRenameForm"
      },
      "FolderAccessGrantsForm": {
        "properties": {
          "access_grants": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Access Grants"
          },
          "share_mode": {
            "anyOf": [
              {
                "type": "string",
                "const": "continue"
              },
              {
                "type": "null"
              }
            ],
            "title": "Share Mode"
          }
        },
        "type": "object",
        "required": [
          "access_grants"
        ],
        "title": "FolderAccessGrantsForm"
      },
      "FolderForm": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "parent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name"
        ],
        "title": "FolderForm"
      },
      "FolderIsExpandedForm": {
        "properties": {
          "is_expanded": {
            "type": "boolean",
            "title": "Is Expanded"
          }
        },
        "type": "object",
        "required": [
          "is_expanded"
        ],
        "title": "FolderIsExpandedForm"
      },
      "FolderMetadataResponse": {
        "properties": {
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          }
        },
        "type": "object",
        "title": "FolderMetadataResponse"
      },
      "FolderModel": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "parent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "items": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Items"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "is_expanded": {
            "type": "boolean",
            "title": "Is Expanded",
            "default": false
          },
          "created_at": {
            "type": "integer",
            "title": "Created At"
          },
          "updated_at": {
            "type": "integer",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "user_id",
          "name",
          "created_at",
          "updated_at"
        ],
        "title": "FolderResponse"
      },
      "FolderNameIdResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FolderMetadataResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "parent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "is_expanded": {
            "type": "boolean",
            "title": "Is Expanded",
            "default": false
          },
          "unread_count": {
            "type": "integer",
            "title": "Unread Count",
            "default": 0
          },
          "created_at": {
            "type": "integer",
            "title": "Created At"
          },
          "updated_at": {
            "type": "integer",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "created_at",
          "updated_at"
        ],
        "title": "FolderNameIdResponse"
      },
      "FolderParentIdForm": {
        "properties": {
          "parent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          }
        },
        "type": "object",
        "title": "FolderParentIdForm"
      },
      "FolderResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "parent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "items": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Items"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "is_expanded": {
            "type": "boolean",
            "title": "Is Expanded",
            "default": false
          },
          "created_at": {
            "type": "integer",
            "title": "Created At"
          },
          "updated_at": {
            "type": "integer",
            "title": "Updated At"
          },
          "access_grants": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Access Grants",
            "default": []
          },
          "write_access": {
            "type": "boolean",
            "title": "Write Access",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "id",
          "user_id",
          "name",
          "created_at",
          "updated_at"
        ],
        "title": "FolderResponse"
      },
      "FolderUpdateForm": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "FolderUpdateForm"
      },
      "ForkForm": {
        "properties": {
          "message_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message Id"
          }
        },
        "type": "object",
        "title": "ForkForm"
      },
      "FunctionCall": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "arguments": {
            "type": "string",
            "description": "Argomenti serializzati come stringa JSON."
          }
        },
        "required": [
          "name",
          "arguments"
        ]
      },
      "GatewayChatResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "type": "string",
            "const": "chat.completion"
          },
          "created": {
            "type": "integer"
          },
          "model": {
            "$ref": "#/components/schemas/Profile"
          },
          "choices": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "integer"
                },
                "message": {
                  "$ref": "#/components/schemas/ChatMessage"
                },
                "finish_reason": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "message"
              ]
            }
          },
          "usage": {
            "$ref": "#/components/schemas/Usage"
          }
        },
        "required": [
          "id",
          "object",
          "model",
          "choices"
        ],
        "additionalProperties": true
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "JSONValue": {
        "description": "Valore JSON applicativo arbitrario: null, booleano, numero, stringa, array oppure oggetto. La struttura dipende dal contenuto salvato o dallo schema JSON fornito dal chiamante."
      },
      "MCPChat": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "chat": {
            "$ref": "#/components/schemas/ChatDocument"
          },
          "revision": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "id",
          "title",
          "chat",
          "revision"
        ]
      },
      "MCPChatList": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "updated_at": {
                  "type": "integer",
                  "description": "Unix timestamp in secondi."
                }
              },
              "required": [
                "id",
                "title",
                "updated_at"
              ]
            }
          },
          "next_offset": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_offset"
        ]
      },
      "MCPContinueResult": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "chat_id": {
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "content": {
                "type": "string"
              },
              "saved": {
                "type": "boolean",
                "const": true
              }
            },
            "required": [
              "chat_id",
              "revision",
              "content",
              "saved"
            ]
          },
          {
            "type": "object",
            "properties": {
              "chat_id": {
                "type": "string"
              },
              "content": {
                "type": "string"
              },
              "saved": {
                "type": "boolean",
                "const": false
              },
              "reason": {
                "type": "string",
                "enum": [
                  "conversation_deleted",
                  "parent_deleted"
                ]
              }
            },
            "required": [
              "chat_id",
              "content",
              "saved",
              "reason"
            ]
          },
          {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "chat_id": {
                "type": "string"
              }
            },
            "required": [
              "error",
              "chat_id"
            ]
          }
        ]
      },
      "MCPMethodError": {
        "type": "object",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "const": "2.0"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ]
          },
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "integer",
                "const": -32601
              },
              "message": {
                "type": "string",
                "const": "Method not found"
              }
            },
            "required": [
              "code",
              "message"
            ]
          }
        },
        "required": [
          "jsonrpc",
          "id",
          "error"
        ]
      },
      "MCPRequest": {
        "type": "object",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "const": "2.0"
          },
          "id": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "integer"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "method": {
            "type": "string",
            "enum": [
              "initialize",
              "ping",
              "tools/list",
              "tools/call"
            ]
          },
          "params": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "protocolVersion": {
                    "type": "string"
                  },
                  "capabilities": {
                    "$ref": "#/components/schemas/JSONValue"
                  },
                  "clientInfo": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "version": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name",
                      "version"
                    ]
                  }
                },
                "required": []
              },
              {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_list"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_listArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_search"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_searchArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_get"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_getArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_create"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_createArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_append"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_appendArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_continue"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_continueArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  }
                ]
              }
            ]
          }
        },
        "required": [
          "method"
        ],
        "description": "JSON-RPC 2.0 via HTTP POST. initialize/ping/tools/list non richiedono params. tools/call richiede params con name e arguments corrispondenti allo strumento. id assente o null: notifica, HTTP 202 senza corpo. Ogni chiamata con id richiede chat:read; le scritture richiedono anche chat:write e chat_continue richiede chat:infer.",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "method": {
                "type": "string",
                "const": "tools/call"
              },
              "params": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_list"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_listArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_search"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_searchArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_get"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_getArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_create"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_createArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_append"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_appendArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "chat_continue"
                      },
                      "arguments": {
                        "$ref": "#/components/schemas/chat_continueArguments"
                      }
                    },
                    "required": [
                      "name",
                      "arguments"
                    ]
                  }
                ]
              }
            },
            "required": [
              "method",
              "params"
            ]
          },
          {
            "type": "object",
            "properties": {
              "method": {
                "type": "string",
                "enum": [
                  "initialize",
                  "ping",
                  "tools/list"
                ]
              }
            },
            "required": [
              "method"
            ]
          }
        ]
      },
      "MCPResult": {
        "type": "object",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "const": "2.0"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ]
          },
          "result": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "protocolVersion": {
                    "type": "string"
                  },
                  "capabilities": {
                    "type": "object",
                    "properties": {
                      "tools": {
                        "type": "object",
                        "properties": {
                          "listChanged": {
                            "type": "boolean",
                            "const": false
                          }
                        },
                        "required": [
                          "listChanged"
                        ]
                      }
                    },
                    "required": [
                      "tools"
                    ]
                  },
                  "serverInfo": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "const": "netter-openwebui"
                      },
                      "version": {
                        "type": "string",
                        "const": "1.0.0"
                      }
                    },
                    "required": [
                      "name",
                      "version"
                    ]
                  }
                },
                "required": [
                  "protocolVersion",
                  "capabilities",
                  "serverInfo"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "tools": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "inputSchema": {
                          "$ref": "#/components/schemas/JSONValue"
                        },
                        "annotations": {
                          "$ref": "#/components/schemas/JSONValue"
                        }
                      },
                      "required": [
                        "name",
                        "description",
                        "inputSchema",
                        "annotations"
                      ]
                    }
                  }
                },
                "required": [
                  "tools"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "content": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "text"
                        },
                        "text": {
                          "type": "string",
                          "description": "Per tools/call contiene JSON serializzato: decodificare text secondo lo schema del risultato dello strumento. In caso di errore può essere testo semplice."
                        }
                      },
                      "required": [
                        "type",
                        "text"
                      ]
                    }
                  },
                  "isError": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "content",
                  "isError"
                ]
              },
              {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "jsonrpc",
          "id",
          "result"
        ]
      },
      "MessagesResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "const": "message"
          },
          "role": {
            "type": "string",
            "const": "assistant"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentPart"
            }
          },
          "model": {
            "$ref": "#/components/schemas/Profile"
          },
          "stop_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "stop_sequence": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "usage": {
            "$ref": "#/components/schemas/Usage"
          }
        },
        "required": [
          "id",
          "type",
          "role",
          "content",
          "model",
          "usage"
        ],
        "additionalProperties": true
      },
      "MessagesStreamEvent": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "message_start",
              "content_block_start",
              "content_block_delta",
              "content_block_stop",
              "message_delta",
              "message_stop",
              "ping",
              "error"
            ]
          },
          "index": {
            "type": "integer"
          },
          "message": {
            "$ref": "#/components/schemas/MessagesResponse"
          },
          "content_block": {
            "$ref": "#/components/schemas/ContentPart"
          },
          "delta": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "text": {
                "type": "string"
              },
              "partial_json": {
                "type": "string"
              },
              "thinking": {
                "type": "string"
              },
              "signature": {
                "type": "string"
              },
              "stop_reason": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "stop_sequence": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true
          },
          "usage": {
            "$ref": "#/components/schemas/Usage"
          },
          "error": {
            "$ref": "#/components/schemas/JSONValue"
          }
        },
        "required": [
          "type"
        ],
        "additionalProperties": true
      },
      "Model": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Profile"
          },
          "display_name": {
            "type": "string"
          },
          "object": {
            "type": "string",
            "const": "model"
          },
          "type": {
            "type": "string",
            "const": "model"
          },
          "created": {
            "type": "integer",
            "description": "Unix timestamp in secondi."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "owned_by": {
            "type": "string",
            "const": "openai"
          },
          "operations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "name": {
            "type": "string"
          },
          "urlIdx": {
            "type": "integer"
          },
          "info": {
            "type": "object",
            "properties": {
              "meta": {
                "type": "object",
                "properties": {
                  "capabilities": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "boolean"
                    }
                  }
                },
                "required": [
                  "capabilities"
                ]
              },
              "params": {
                "type": "object",
                "properties": {
                  "function_calling": {
                    "type": "string",
                    "const": "legacy"
                  }
                },
                "required": [
                  "function_calling"
                ]
              }
            },
            "required": [
              "meta",
              "params"
            ]
          }
        },
        "required": [
          "id",
          "display_name",
          "object",
          "type",
          "created",
          "created_at",
          "owned_by",
          "operations"
        ]
      },
      "ModelList": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "const": "list"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Model"
            }
          },
          "has_more": {
            "type": "boolean",
            "const": false
          }
        },
        "required": [
          "object",
          "data",
          "has_more"
        ]
      },
      "NativeChatRequest": {
        "type": "object",
        "properties": {
          "model": {
            "$ref": "#/components/schemas/Profile",
            "description": "Nome pubblico esatto. Se omesso usa il default effettivo della chiave; switchyard disponibile solo su Chat, Responses e Messages."
          },
          "stream": {
            "type": "boolean",
            "default": false
          },
          "temperature": {
            "type": "number"
          },
          "top_p": {
            "type": "number"
          },
          "reasoning_effort": {
            "$ref": "#/components/schemas/ReasoningEffort"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatMessage"
            }
          },
          "max_tokens": {
            "type": "integer",
            "minimum": 1
          },
          "max_completion_tokens": {
            "type": "integer",
            "minimum": 1
          },
          "tools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatTool"
            }
          },
          "tool_choice": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "auto",
                  "none",
                  "required"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "const": "function"
                  },
                  "function": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "type",
                  "function"
                ]
              }
            ]
          },
          "parallel_tool_calls": {
            "type": "boolean"
          },
          "response_format": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "text",
                  "json_object",
                  "json_schema"
                ]
              },
              "json_schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "schema": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "JSON Schema del risultato strutturato."
                  },
                  "strict": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "name",
                  "schema"
                ]
              }
            },
            "required": [
              "type"
            ]
          },
          "stop": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "stream_options": {
            "type": "object",
            "properties": {
              "include_usage": {
                "type": "boolean"
              }
            }
          },
          "chat_id": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "message_ids": {
            "anyOf": [
              {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "message_id": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message_id"
                  ]
                }
              }
            ]
          },
          "features": {
            "type": "object",
            "properties": {
              "web_search": {
                "type": "boolean"
              },
              "code_interpreter": {
                "type": "boolean"
              }
            },
            "required": []
          },
          "params": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/JSONValue"
            }
          }
        },
        "required": [
          "messages"
        ],
        "additionalProperties": true,
        "description": "Serve un identificativo di generazione: id oppure un singolo valore in message_ids. Un identificativo già inviato restituisce 409 e non ridispatcha inferenza. chat_id deve appartenere all’utente. Soltanto web_search e code_interpreter sono abilitabili; tool/provider esterni e background_tasks sono filtrati sul server.",
        "examples": [
          {
            "model": "switchyard",
            "messages": [
              {
                "role": "user",
                "content": "Ciao!"
              }
            ],
            "max_tokens": 512,
            "stream": false
          }
        ]
      },
      "Profile": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200,
        "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/+@-]*$",
        "description": "Nome pubblico esatto del modello o alias configurato; switchyard è riservato al routing intelligente."
      },
      "ReasoningEffort": {
        "type": "string",
        "enum": [
          "none",
          "minimal",
          "low",
          "medium",
          "high",
          "xhigh",
          "max"
        ],
        "default": "medium",
        "description": "Switchyard cerca il livello più vicino, preferendo quello superiore a parità di distanza."
      },
      "ResolveToolCallForm": {
        "properties": {
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "action": {
            "type": "string",
            "enum": [
              "approve",
              "reject",
              "answer"
            ],
            "title": "Action"
          },
          "answers": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ],
            "title": "Answers"
          },
          "timed_out": {
            "type": "boolean",
            "title": "Timed Out",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "call_id",
          "action"
        ],
        "title": "ResolveToolCallForm"
      },
      "ResponseItem": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "message",
              "function_call",
              "function_call_output",
              "reasoning"
            ]
          },
          "id": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ContentPart"
                }
              }
            ]
          },
          "call_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "arguments": {
            "type": "string"
          },
          "output": {
            "type": "string"
          },
          "encrypted_content": {
            "type": "string"
          },
          "summary": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "text": {
                  "type": "string"
                }
              },
              "required": [
                "type",
                "text"
              ]
            }
          }
        },
        "required": [
          "type"
        ],
        "additionalProperties": true,
        "description": "Un item Responses nativo. function_call richiede call_id/name/arguments; function_call_output richiede call_id/output. Gli item reasoning cifrati vanno conservati invariati."
      },
      "ResponsesResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "type": "string",
            "const": "response"
          },
          "created_at": {
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "model": {
            "$ref": "#/components/schemas/Profile"
          },
          "output": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResponseItem"
            }
          },
          "usage": {
            "$ref": "#/components/schemas/Usage"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JSONValue"
              },
              {
                "type": "null"
              }
            ]
          },
          "incomplete_details": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JSONValue"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "object",
          "output"
        ],
        "additionalProperties": true
      },
      "ResponsesStreamEvent": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "sequence_number": {
            "type": "integer"
          },
          "response": {
            "$ref": "#/components/schemas/ResponsesResponse"
          },
          "item": {
            "$ref": "#/components/schemas/ResponseItem"
          },
          "item_id": {
            "type": "string"
          },
          "output_index": {
            "type": "integer"
          },
          "content_index": {
            "type": "integer"
          },
          "delta": {
            "type": "string"
          },
          "part": {
            "$ref": "#/components/schemas/ContentPart"
          }
        },
        "required": [
          "type"
        ],
        "additionalProperties": true
      },
      "ServerSentEvents": {
        "type": "string",
        "description": "Stream SSE UTF-8 senza buffering, frame separati da una riga vuota. Chat/Completions: data JSON, ultimo usage e data: [DONE]. Messages: event message_start/content_block_start/content_block_delta/content_block_stop/message_delta/message_stop. Responses: event response.created/response.output_item.added/response.content_part.added/response.output_text.delta/response.function_call_arguments.delta/response.completed (o incomplete/failed). Delta testuali possono essere frammentati; assemblare per indice, non per frame. Errori in-band event:error contengono type:error, error.type:stream_error, message e request_id; il consumo può restare incerto.",
        "x-event-schemas": {
          "chat": {
            "$ref": "#/components/schemas/ChatChunk"
          },
          "messages": {
            "$ref": "#/components/schemas/MessagesStreamEvent"
          },
          "responses": {
            "$ref": "#/components/schemas/ResponsesStreamEvent"
          }
        }
      },
      "SessionUserInfoResponse": {
        "properties": {
          "status_emoji": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Emoji"
          },
          "status_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Message"
          },
          "status_expires_at": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Expires At"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "role": {
            "type": "string",
            "title": "Role"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "profile_image_url": {
            "type": "string",
            "title": "Profile Image Url"
          },
          "token": {
            "type": "string",
            "title": "Token"
          },
          "token_type": {
            "type": "string",
            "title": "Token Type"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "permissions": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Permissions"
          },
          "bio": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bio"
          },
          "gender": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gender"
          },
          "date_of_birth": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date Of Birth"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "role",
          "email",
          "profile_image_url",
          "token",
          "token_type"
        ],
        "title": "SessionUserInfoResponse"
      },
      "TagFilterForm": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "skip": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Skip",
            "default": 0
          },
          "limit": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Limit",
            "default": 50
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "TagFilterForm"
      },
      "TagForm": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "TagForm"
      },
      "TagModel": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "user_id"
        ],
        "title": "TagModel"
      },
      "ToolCall": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "const": "function"
          },
          "function": {
            "$ref": "#/components/schemas/FunctionCall"
          }
        },
        "required": [
          "id",
          "type",
          "function"
        ]
      },
      "UpdateTimezoneForm": {
        "properties": {
          "timezone": {
            "type": "string",
            "title": "Timezone"
          }
        },
        "type": "object",
        "required": [
          "timezone"
        ],
        "title": "UpdateTimezoneForm"
      },
      "Usage": {
        "type": "object",
        "properties": {
          "prompt_tokens": {
            "type": "integer",
            "minimum": 0
          },
          "completion_tokens": {
            "type": "integer",
            "minimum": 0
          },
          "total_tokens": {
            "type": "integer",
            "minimum": 0
          },
          "input_tokens": {
            "type": "integer",
            "minimum": 0
          },
          "output_tokens": {
            "type": "integer",
            "minimum": 0
          },
          "cache_read_input_tokens": {
            "type": "integer",
            "minimum": 0
          },
          "cache_creation_input_tokens": {
            "type": "integer",
            "minimum": 0
          }
        },
        "additionalProperties": true,
        "description": "Contatori nativi. Chat usa prompt_tokens/completion_tokens; Responses e Messages usano input_tokens/output_tokens. Contatori cache e reasoning dipendono dal provider."
      },
      "UserInfoResponse": {
        "properties": {
          "status_emoji": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Emoji"
          },
          "status_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Message"
          },
          "status_expires_at": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Expires At"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "role": {
            "type": "string",
            "title": "Role"
          },
          "bio": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bio"
          },
          "last_active_at": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Active At"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "groups": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Groups",
            "default": []
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "email",
          "role"
        ],
        "title": "UserInfoResponse"
      },
      "UserModel": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          },
          "role": {
            "type": "string",
            "title": "Role",
            "default": "pending"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "profile_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Image Url"
          },
          "profile_banner_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Banner Image Url"
          },
          "bio": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bio"
          },
          "gender": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gender"
          },
          "date_of_birth": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date Of Birth"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "presence_state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Presence State"
          },
          "status_emoji": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Emoji"
          },
          "status_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Message"
          },
          "status_expires_at": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Expires At"
          },
          "info": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Info"
          },
          "settings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UserSettings"
              },
              {
                "type": "null"
              }
            ]
          },
          "oauth": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Oauth"
          },
          "scim": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scim"
          },
          "last_active_at": {
            "type": "integer",
            "title": "Last Active At"
          },
          "updated_at": {
            "type": "integer",
            "title": "Updated At"
          },
          "created_at": {
            "type": "integer",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "email",
          "name",
          "last_active_at",
          "updated_at",
          "created_at"
        ],
        "title": "UserModel"
      },
      "UserSettings": {
        "properties": {
          "ui": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ui",
            "default": {}
          }
        },
        "additionalProperties": true,
        "type": "object",
        "title": "UserSettings"
      },
      "UserUpdateForm": {
        "properties": {
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "profile_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Image Url"
          },
          "password": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          }
        },
        "type": "object",
        "title": "UserUpdateForm"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "chat_appendArguments": {
        "type": "object",
        "properties": {
          "chat_id": {
            "type": "string"
          },
          "expected_revision": {
            "type": "integer",
            "minimum": 0
          },
          "operation_id": {
            "type": "string",
            "format": "uuid"
          },
          "content": {
            "type": "string"
          },
          "role": {
            "enum": [
              "user",
              "assistant"
            ]
          }
        },
        "required": [
          "chat_id",
          "expected_revision",
          "operation_id",
          "content"
        ],
        "additionalProperties": false
      },
      "chat_continueArguments": {
        "type": "object",
        "properties": {
          "chat_id": {
            "type": "string"
          },
          "expected_revision": {
            "type": "integer",
            "minimum": 0
          },
          "operation_id": {
            "type": "string",
            "format": "uuid"
          },
          "content": {
            "type": "string"
          },
          "model": {
            "type": "string"
          }
        },
        "required": [
          "chat_id",
          "expected_revision",
          "operation_id",
          "content"
        ],
        "additionalProperties": false
      },
      "chat_createArguments": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "operation_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "operation_id"
        ],
        "additionalProperties": false
      },
      "chat_getArguments": {
        "type": "object",
        "properties": {
          "chat_id": {
            "type": "string"
          }
        },
        "required": [
          "chat_id"
        ],
        "additionalProperties": false
      },
      "chat_listArguments": {
        "type": "object",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "chat_searchArguments": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "offset": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "open_webui__routers__chats__MessageForm": {
        "properties": {
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content"
          },
          "voice": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice"
          }
        },
        "type": "object",
        "title": "MessageForm"
      }
    }
  }
}
