{
  "openapi": "3.1.1",
  "info": {
    "title": "Weavy API",
    "version": "32.0.0"
  },
  "paths": {
    "/api/agents": {
      "post": {
        "tags": [
          "Agents"
        ],
        "summary": "Create agent",
        "description": "Create AI agent.",
        "operationId": "createAgent",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/agents",
        "x-curl": "curl {WEAVY-URL}/api/agents\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'uid': 'tweety-bird', 'name': 'Tweety Bird', 'provider': 'openai', 'model': 'gpt-5.4-mini', 'instructions': 'You’re a cute cartoon character with an aggressive nature.' }\"",
        "x-order": 106
      },
      "get": {
        "tags": [
          "Agents"
        ],
        "summary": "List agents",
        "description": "List AI agents.",
        "operationId": "listAgents",
        "parameters": [
          {
            "name": "autocomplete",
            "in": "query",
            "description": "`true` (default) to use \"autocomplete\" search, otherwise `false`.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "directory",
            "in": "query",
            "description": "Directory identifier (`id` or `name`). When unspecified agents from all directories are listed.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfAgentOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "List",
        "x-method": "GET",
        "x-path": "/api/agents",
        "x-curl": "curl {WEAVY-URL}/api/agents?take=25\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 504
      }
    },
    "/api/agents/{agent}": {
      "get": {
        "tags": [
          "Agents"
        ],
        "summary": "Get agent",
        "description": "Get AI agent with specified identifier.",
        "operationId": "getAgent",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "`true` to return agent even if trashed.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/agents/{agent}",
        "x-curl": "curl {WEAVY-URL}/api/agents/tweety-bird\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 203
      },
      "patch": {
        "tags": [
          "Agents"
        ],
        "summary": "Update agent",
        "description": "Update AI agent.",
        "operationId": "updateAgent",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentUp"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "Update",
        "x-method": "PATCH",
        "x-path": "/api/agents/{agent}",
        "x-curl": "curl -X PATCH {WEAVY-URL}/api/agents/tweety-bird\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'model': 'gpt-5.4-nano' }\"",
        "x-order": 306
      },
      "delete": {
        "tags": [
          "Agents"
        ],
        "summary": "Delete agent",
        "description": "Permanently delete an AI agent.\r\nContent generated by the agent won’t be removed (this includes comments, files, messages and other data).",
        "operationId": "deleteAgent",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Identifier (`id` or `uid`) of agent to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "Delete",
        "x-method": "DELETE",
        "x-path": "/api/agents/{agent}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/agents/tweety-bird\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 10306
      }
    },
    "/api/agents/{uid}": {
      "put": {
        "tags": [
          "Agents"
        ],
        "summary": "Upsert agent",
        "description": "Update or insert AI agent. If an agent with the specified `uid` is found it is updated, otherwise it is created.",
        "operationId": "upsertAgent",
        "parameters": [
          {
            "name": "uid",
            "in": "path",
            "description": "Unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentUpsert"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentUpsert"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentUpsert"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentUpsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentOut"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "Upsert",
        "x-method": "PUT",
        "x-path": "/api/agents/{uid}",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/agents/tweety-bird\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'name': 'Tweety Bird', 'provider': 'openai', 'model': 'gpt-5.4-mini', 'instructions': 'You’re a cute cartoon character with an aggressive nature.' }\"",
        "x-order": 406
      }
    },
    "/api/agents/{agent}/trash": {
      "post": {
        "tags": [
          "Agents"
        ],
        "summary": "Trash agent",
        "description": "Move an AI agent to the trash.",
        "operationId": "trashAgent",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Identifier (`id` or `uid`) of agent to trash.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "Trash",
        "x-method": "POST",
        "x-path": "/api/agents/{agent}/trash",
        "x-curl": "curl -X POST {WEAVY-URL}/api/agents/tweety-bird/trash\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 10105
      }
    },
    "/api/agents/{agent}/restore": {
      "post": {
        "tags": [
          "Agents"
        ],
        "summary": "Restore agent",
        "description": "Restore an AI agent from the trash.",
        "operationId": "restoreAgent",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Identifier (`id` or `uid`) of agent to restore.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "Restore",
        "x-method": "POST",
        "x-path": "/api/agents/{agent}/restore",
        "x-curl": "curl -X POST {WEAVY-URL}/api/agents/tweety-bird/restore\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 10207
      }
    },
    "/api/agents/{agent}/functions": {
      "post": {
        "tags": [
          "Agents"
        ],
        "summary": "Add function",
        "description": "Adds a function definition to the agent's tools, allowing it to interface with an external API endpoint.",
        "operationId": "addFunction",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentFunctionOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "CreateFunction",
        "x-method": "POST",
        "x-path": "/api/agents/{agent}/functions",
        "x-curl": "curl -X POST {WEAVY-URL}/api/agents/tweety-bird/functions\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'name': 'get_joke', 'description': 'Returns a joke', 'url': 'https://api.example.com/joke' }\"",
        "x-order": 20100
      },
      "get": {
        "tags": [
          "Agents"
        ],
        "summary": "List functions",
        "description": "List all function definitions for an agent.",
        "operationId": "listFunctions",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgentFunctionOut"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "ListFunctions",
        "x-method": "GET",
        "x-path": "/api/agents/{agent}/functions",
        "x-curl": "curl -X GET {WEAVY-URL}/api/agents/tweety-bird/functions\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 20500
      }
    },
    "/api/agents/{agent}/functions/{name}": {
      "get": {
        "tags": [
          "Agents"
        ],
        "summary": "Get function",
        "description": "Returns the definition for the specified function.",
        "operationId": "getFunction",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "path",
            "description": "Name of function.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentFunctionOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "GetFunction",
        "x-method": "GET",
        "x-path": "/api/agents/{agent}/functions/{name}",
        "x-curl": "curl -X GET {WEAVY-URL}/api/agents/tweety-bird/functions/get_joke\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 20200
      },
      "patch": {
        "tags": [
          "Agents"
        ],
        "summary": "Update function",
        "description": "Updates an existing function definition.",
        "operationId": "updateFunction",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "path",
            "description": "Name of function to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionUp"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentFunctionOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "UpdateFunction",
        "x-method": "PATCH",
        "x-path": "/api/agents/{agent}/functions/{name}",
        "x-curl": "curl -X PATCH {WEAVY-URL}/api/agents/tweety-bird/functions/get_joke\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'name': 'get_joke', 'description': 'Returns a joke', 'url': 'https://api.example.com/joke' }\"",
        "x-order": 20300
      },
      "put": {
        "tags": [
          "Agents"
        ],
        "summary": "Upsert function",
        "description": "Add or update a function definition. If the agent already has a function with the specified `name` it is updated, otherwise it is added.",
        "operationId": "upsertFunction",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "path",
            "description": "Function name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentFunctionIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentFunctionOut"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentFunctionOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "UpsertFunction",
        "x-method": "PUT",
        "x-path": "/api/agents/{agent}/functions/{name}",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/agents/tweety-bird/functions/get_joke\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'name': 'get_joke', 'description': 'Returns a joke', 'url': 'https://api.example.com/joke' }\"",
        "x-order": 20400
      },
      "delete": {
        "tags": [
          "Agents"
        ],
        "summary": "Remove function",
        "description": "Remove a function definition from the agent.",
        "operationId": "removeFunction",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "path",
            "description": "Name of function to remove.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "RemoveFunction",
        "x-method": "DELETE",
        "x-path": "/api/agents/{agent}/functions/{name}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/agents/tweety-bird/functions/get_joke\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 20700
      }
    },
    "/api/agents/{agent}/mcp": {
      "post": {
        "tags": [
          "Agents"
        ],
        "summary": "Add MCP server configuration",
        "description": "Configures an MCP server for the agent.",
        "operationId": "addMcpServerConfiguration",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentFunctionOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "CreateMcpServer",
        "x-method": "POST",
        "x-path": "/api/agents/{agent}/mcp",
        "x-curl": "curl -X POST {WEAVY-URL}/api/agents/tweety-bird/mcp\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'name': 'microsoft_learn', 'url': 'https://learn.microsoft.com/api/mcp' }\"",
        "x-order": 20100
      },
      "get": {
        "tags": [
          "Agents"
        ],
        "summary": "List MCP server configurations",
        "description": "List all configured MCP servers for an agent.",
        "operationId": "listMcpServerConfigurations",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/McpServerOut"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "ListMcpServers",
        "x-method": "GET",
        "x-path": "/api/agents/{agent}/mcp",
        "x-curl": "curl -X GET {WEAVY-URL}/api/agents/tweety-bird/mcp\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 20500
      }
    },
    "/api/agents/{agent}/mcp/{name}": {
      "get": {
        "tags": [
          "Agents"
        ],
        "summary": "Get MCP server configuration",
        "description": "Returns the configuration for the specified MCP server.",
        "operationId": "getMcpServerConfiguration",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "path",
            "description": "Name of mcp server.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "GetMcpServer",
        "x-method": "GET",
        "x-path": "/api/agents/{agent}/mcp/{name}",
        "x-curl": "curl -X GET {WEAVY-URL}/api/agents/tweety-bird/mcp/microsoft_learn\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 20200
      },
      "patch": {
        "tags": [
          "Agents"
        ],
        "summary": "Update MCP server configuration",
        "description": "Updates an existing MCP server configuration.",
        "operationId": "updateMcpServerConfiguration",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "path",
            "description": "Name of MCP server configuration to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerUp"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "UpdateMcpServer",
        "x-method": "PATCH",
        "x-path": "/api/agents/{agent}/mcp/{name}",
        "x-curl": "curl -X PATCH {WEAVY-URL}/api/agents/tweety-bird/mcp/microsoft_learn\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'description': 'An MCP server that can search through and fetch Microsoft's latest official documentation' }\"",
        "x-order": 20300
      },
      "put": {
        "tags": [
          "Agents"
        ],
        "summary": "Upsert MCP server configuration",
        "description": "Add or update an MCP server configuration. If the agent already has a MCP server with the specified `name` it is updated, otherwise it is added.",
        "operationId": "upsertMcpServerConfiguration",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "path",
            "description": "MCP server name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/McpServerIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerOut"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "UpsertMcpServer",
        "x-method": "PUT",
        "x-path": "/api/agents/{agent}/mcp/{name}",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/agents/tweety-bird/mcp/microsoft_learn\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'name': 'microsoft_learn', 'url': 'https://learn.microsoft.com/api/mcp' }\"",
        "x-order": 20400
      },
      "delete": {
        "tags": [
          "Agents"
        ],
        "summary": "Remove MCP server configuration",
        "description": "Remove an MCP server configuration from the agent.",
        "operationId": "removeMcpServerConfiguration",
        "parameters": [
          {
            "name": "agent",
            "in": "path",
            "description": "Agent identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "path",
            "description": "Name of MCP server to remove.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Agents",
        "x-action": "RemoveMcpServer",
        "x-method": "DELETE",
        "x-path": "/api/agents/{agent}/mcp/{name}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/agents/tweety-bird/mcp/microsoft_learn\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 20700
      }
    },
    "/api/apps": {
      "post": {
        "tags": [
          "Apps"
        ],
        "summary": "Create app",
        "description": "Create app of specified `type`.",
        "operationId": "createApp",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AppIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AppIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AppIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/apps",
        "x-curl": "curl {WEAVY-URL}/api/apps\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'type': 'chat', 'uid': 'acme-chat', 'access': 'write' }\"",
        "x-order": 106
      },
      "get": {
        "tags": [
          "Apps"
        ],
        "summary": "List apps",
        "description": "Returns a list of apps matching the `query` parameters.",
        "operationId": "listApps",
        "parameters": [
          {
            "name": "directory",
            "in": "query",
            "description": "Directory identifier (`id` or `name`). When unspecified apps from all directories are listed.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "archived",
            "in": "query",
            "description": "`true` lists archived apps, `false` lists unarchived apps.\r\nWhen unspecified apps are listed regardless of their archived status.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "member",
            "in": "query",
            "description": "User identifier (`id` or `uid`). Used to list apps where specified user is member.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Can be used to list apps of a specified type (`name` or `guid`). When unspecifed all types of apps are listed.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "uid",
            "in": "query",
            "description": "`true` lists apps with a `uid`, `false` lists apps without `uid`.\r\nBy default apps are listed whether they have a `uid` or not.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "unread",
            "in": "query",
            "description": "`true` lists apps with unread messages, `false` lists apps where all messages are read.\r\nWhen unspecified apps are listed whether they have unread messages or not.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfAppOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "List",
        "x-method": "GET",
        "x-path": "/api/apps",
        "x-curl": "curl {WEAVY-URL}/api/apps?take=25\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 504
      }
    },
    "/api/apps/{app}": {
      "get": {
        "tags": [
          "Apps"
        ],
        "summary": "Get app",
        "description": "Get details for the specified app.",
        "operationId": "getApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "`true` to return app even if trashed (default is `false`).",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/apps/{app}",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-chat\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 203
      },
      "patch": {
        "tags": [
          "Apps"
        ],
        "summary": "Update app",
        "description": "Update and return existing app.",
        "operationId": "updateApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AppUp"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AppUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AppUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Update",
        "x-method": "PATCH",
        "x-path": "/api/apps/{app}",
        "x-curl": "curl -X PATCH {WEAVY-URL}/api/apps/acme-chat\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'description': 'Chat for ACME project' }\"",
        "x-order": 306
      },
      "delete": {
        "tags": [
          "Apps"
        ],
        "summary": "Delete app",
        "description": "Permanently delete an app and all it's content.",
        "operationId": "deleteApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Delete",
        "x-method": "DELETE",
        "x-path": "/api/apps/{app}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/apps/acme-chat\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10306
      }
    },
    "/api/apps/{uid}": {
      "put": {
        "tags": [
          "Apps"
        ],
        "summary": "Upsert app",
        "description": "Update or insert app with specified `uid` and `type`. If a matching app exists, it is updated, otherwise it is created.",
        "operationId": "upsertApp",
        "parameters": [
          {
            "name": "uid",
            "in": "path",
            "description": "Unique app identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AppUpsert"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppUpsert"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AppUpsert"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AppUpsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppOut"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Upsert",
        "x-method": "PUT",
        "x-path": "/api/apps/{uid}",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/apps/acme-chat\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'type': 'chat', 'access': 'write' }\"",
        "x-order": 406
      }
    },
    "/api/apps/{app}/archive": {
      "put": {
        "tags": [
          "Apps"
        ],
        "summary": "Archive app",
        "description": "Mark app as archived by the authenticated user.",
        "operationId": "archiveApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Archive",
        "x-method": "PUT",
        "x-path": "/api/apps/{app}/archive",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/apps/acme-chat/archive\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10092
      },
      "delete": {
        "tags": [
          "Apps"
        ],
        "summary": "Unarchive app",
        "description": "Mark app as unarchived by the authenticated user.",
        "operationId": "unarchiveApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Unarchive",
        "x-method": "DELETE",
        "x-path": "/api/apps/{app}/archive",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/apps/acme-chat/archive\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10093
      }
    },
    "/api/apps/{app}/mark": {
      "put": {
        "tags": [
          "Apps"
        ],
        "summary": "Set marker",
        "description": "Sets the read marker for the authenticated user, i.e mark app as read.",
        "operationId": "setMarker",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "message_id",
            "in": "query",
            "description": "Optional id of last seen message. When not specified the read marker is moved to the last message, marking the entire app as read.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Mark",
        "x-method": "PUT",
        "x-path": "/api/apps/{app}/mark",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/apps/acme-chat/mark\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10090
      },
      "delete": {
        "tags": [
          "Apps"
        ],
        "summary": "Remove marker",
        "description": "Removes the read marker for the authenticated user, i.e mark the app as unread.",
        "operationId": "removeMarker",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Unmark",
        "x-method": "DELETE",
        "x-path": "/api/apps/{app}/mark",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/apps/acme-chat/mark\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10091
      }
    },
    "/api/apps/{app}/pin": {
      "put": {
        "tags": [
          "Apps"
        ],
        "summary": "Pin app",
        "description": "Mark app as pinned by the authenticated user.",
        "operationId": "pinApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Pin",
        "x-method": "PUT",
        "x-path": "/api/apps/{app}/pin",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/apps/acme-chat/pin\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10092
      },
      "delete": {
        "tags": [
          "Apps"
        ],
        "summary": "Unpin app",
        "description": "Remove pin for the authenticated user.",
        "operationId": "unpinApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Unpin",
        "x-method": "DELETE",
        "x-path": "/api/apps/{app}/pin",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/apps/acme-chat/pin\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10093
      }
    },
    "/api/apps/{app}/typing": {
      "put": {
        "tags": [
          "Apps"
        ],
        "summary": "Indicate typing",
        "description": "Indicate that the authenticated user is typing a message.",
        "operationId": "indicateTyping",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Typing",
        "x-method": "PUT",
        "x-path": "/api/apps/{app}/typing",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/app/acme-chat/typing\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10006
      }
    },
    "/api/apps/{app}/trash": {
      "post": {
        "tags": [
          "Apps"
        ],
        "summary": "Trash app",
        "description": "Move an app to the trash.",
        "operationId": "trashApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Trash",
        "x-method": "POST",
        "x-path": "/api/apps/{app}/trash",
        "x-curl": "curl -X POST {WEAVY-URL}/api/apps/acme-chat/trash\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10105
      }
    },
    "/api/apps/{app}/restore": {
      "post": {
        "tags": [
          "Apps"
        ],
        "summary": "Restore app",
        "description": "Restore an app from the trash.",
        "operationId": "restoreApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Restore",
        "x-method": "POST",
        "x-path": "/api/apps/{app}/restore",
        "x-curl": "curl -X POST {WEAVY-URL}/api/apps/acme-chat/restore\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10207
      }
    },
    "/api/apps/{app}/remove": {
      "post": {
        "tags": [
          "Apps"
        ],
        "summary": "Remove app",
        "description": "Remove the authenticated user's copy of an app.",
        "operationId": "removeApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "Remove",
        "x-method": "POST",
        "x-path": "/api/apps/{app}/remove",
        "x-curl": "curl -X POST {WEAVY-URL}/api/apps/acme-chat/remove\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 706
      }
    },
    "/api/apps/{app}/members": {
      "get": {
        "tags": [
          "Apps"
        ],
        "summary": "List members",
        "description": "List users who are members of, or have access to, an app. Can also be used for finding users who are not members of an app.",
        "operationId": "listMembers",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "autocomplete",
            "in": "query",
            "description": "`true` (default) to use \"autocomplete\" search, otherwise `false`.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "agent",
            "in": "query",
            "description": "Should AI agents be listed or not.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "member",
            "in": "query",
            "description": "When `true` (default), only app members are listed, `false` returns users that are not members, and `null` returns users with access to the app regardless if they are members or not.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "system",
            "in": "query",
            "description": "Include system users in the result?",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfMemberOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "ListMembers",
        "x-method": "GET",
        "x-path": "/api/apps/{app}/members",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-chat/members\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 511
      },
      "put": {
        "tags": [
          "Apps"
        ],
        "summary": "Upsert members",
        "description": "Add or update app membership for multiple users.",
        "operationId": "upsertMembers",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Members to add/update.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/MemberIn"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/MemberIn"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/MemberIn"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/MemberIn"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "UpsertMembers",
        "x-method": "PUT",
        "x-path": "/api/apps/{app}/members",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-chat/members\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"[ { 'user': 'acme-user' }, { 'user': 'daffy-duck', 'access': 'read' } ]\"",
        "x-order": 413
      },
      "delete": {
        "tags": [
          "Apps"
        ],
        "summary": "Remove members",
        "description": "Remove multiple app members.",
        "operationId": "removeMembers",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "User identifiers (`id` or `uid`) of members to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "RemoveMembers",
        "x-method": "DELETE",
        "x-path": "/api/apps/{app}/members",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/apps/acme-chat/members\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"['bugs-bunny', 'daffy-duck']\"",
        "x-order": 713
      }
    },
    "/api/apps/{app}/members/{user}": {
      "put": {
        "tags": [
          "Apps"
        ],
        "summary": "Upsert member",
        "description": "Add or update app membership for the specified user.",
        "operationId": "upsertMember",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`) of member to add.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MemberOptions"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemberOptions"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MemberOptions"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MemberOptions"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "UpsertMember",
        "x-method": "PUT",
        "x-path": "/api/apps/{app}/members/{user}",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/apps/acme-chat/members/acme-user\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'access': 'read' }\"",
        "x-order": 412
      },
      "delete": {
        "tags": [
          "Apps"
        ],
        "summary": "Remove member",
        "description": "Remove an app member.",
        "operationId": "removeMember",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`) of member to remove.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Apps",
        "x-action": "RemoveMember",
        "x-method": "DELETE",
        "x-path": "/api/apps/{app}/members/{user}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/apps/acme-chat/members/bugs-bunny\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 712
      }
    },
    "/api/blobs/{id}": {
      "get": {
        "tags": [
          "Blobs"
        ],
        "summary": "Get blob",
        "description": "Get the metadata of a blob.",
        "operationId": "getBlob",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of blob.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlobOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Blobs",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/blobs/{id}",
        "x-curl": "curl {WEAVY-URL}/api/blobs/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 203
      }
    },
    "/api/blobs": {
      "post": {
        "tags": [
          "Blobs"
        ],
        "summary": "Upload blob",
        "description": "Uploads a blob using `multipart/form-data`.\r\nAfter creation the blob can be used as reference when creating attachments and/or files.",
        "operationId": "uploadBlob",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlobOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Blobs",
        "x-action": "Upload",
        "x-method": "POST",
        "x-path": "/api/blobs",
        "x-curl": "curl {WEAVY-URL}/api/blobs\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n-F blob=@/test/image.png",
        "x-order": 106
      }
    },
    "/api/blobs/external": {
      "post": {
        "tags": [
          "Blobs"
        ],
        "summary": "Create external blob",
        "description": "Creates a blob that links to an external blob provider.\r\nAfter creation the blob can be used as reference when creating attachments and/or files.",
        "operationId": "createExternalBlob",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/BlobIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlobIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BlobIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BlobIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlobOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Blobs",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/blobs/external",
        "x-order": 106
      }
    },
    "/api/apps/{app}/comments": {
      "post": {
        "tags": [
          "Comments"
        ],
        "summary": "Create app comment",
        "description": "Creates a new comment in the specified Comments app.",
        "operationId": "createAppComment",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "CreateAppComment",
        "x-method": "POST",
        "x-path": "/api/apps/{app}/comments",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-comments/comments\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'text': 'This is a comment' }\"",
        "x-order": 116
      },
      "get": {
        "tags": [
          "Comments"
        ],
        "summary": "List app comments",
        "description": "List comments in the specified comments app.",
        "operationId": "listAppComments",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "around",
            "in": "query",
            "description": "A comment id. Used to find results \"around\" a specific comment.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfCommentOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "ListAppComments",
        "x-method": "GET",
        "x-path": "/api/apps/{app}/comments",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-comments/comments?take=25\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 515
      }
    },
    "/api/files/{id}/comments": {
      "post": {
        "tags": [
          "Comments"
        ],
        "summary": "Create file comment",
        "description": "Creates a new comment on the specified file.",
        "operationId": "createFileComment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "File id",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "CreateFileComment",
        "x-method": "POST",
        "x-path": "/api/files/{id}/comments",
        "x-curl": "curl {WEAVY-URL}/api/files/1/comments\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'text': 'This is a comment on a file' }\"",
        "x-order": 117
      },
      "get": {
        "tags": [
          "Comments"
        ],
        "summary": "List file comments",
        "description": "List comments on the specified file.",
        "operationId": "listFileComments",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "File id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "around",
            "in": "query",
            "description": "A comment id. Used to find results \"around\" a specific comment.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfCommentOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "ListFileComments",
        "x-method": "GET",
        "x-path": "/api/files/{id}/comments",
        "x-curl": "curl {WEAVY-URL}/api/files/1/comments?take=25\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 516
      }
    },
    "/api/posts/{id}/comments": {
      "post": {
        "tags": [
          "Comments"
        ],
        "summary": "Create post comment",
        "description": "Creates a new comment on the specified post.",
        "operationId": "createPostComment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Post id",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CommentIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "CreatePostComment",
        "x-method": "POST",
        "x-path": "/api/posts/{id}/comments",
        "x-curl": "curl {WEAVY-URL}/api/posts/1/comments\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'text': 'This is a comment on a post' }\"",
        "x-order": 117
      },
      "get": {
        "tags": [
          "Comments"
        ],
        "summary": "List post comments",
        "description": "List comments on the specified post.",
        "operationId": "listPostComments",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Post id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "around",
            "in": "query",
            "description": "A comment id. Used to find results \"around\" a specific comment.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfCommentOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "ListPostComments",
        "x-method": "GET",
        "x-path": "/api/posts/{id}/comments",
        "x-curl": "curl {WEAVY-URL}/api/posts/1/comments?take=25\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 516
      }
    },
    "/api/comments/{id}": {
      "get": {
        "tags": [
          "Comments"
        ],
        "summary": "Get comment",
        "description": "Gets a comment by id.",
        "operationId": "getComment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the comment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "`true` to return comment even if trashed, otherwise `false`.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/comments/{id}",
        "x-curl": "curl {WEAVY-URL}/api/comments/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 203
      },
      "patch": {
        "tags": [
          "Comments"
        ],
        "summary": "Update comment",
        "description": "Updates a comment.",
        "operationId": "updateComment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the comment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CommentUp"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommentUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CommentUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CommentUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "Update",
        "x-method": "PATCH",
        "x-path": "/api/comments/{id}",
        "x-curl": "curl -X PATCH {WEAVY-URL}/api/comments/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{'text': 'Update comment text' }\"",
        "x-order": 306
      },
      "delete": {
        "tags": [
          "Comments"
        ],
        "summary": "Delete comment",
        "description": "Delete a comment.",
        "operationId": "deleteComment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the comment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "Delete",
        "x-method": "DELETE",
        "x-path": "/api/comments/{id}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/comments/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10306
      }
    },
    "/api/comments/{id}/trash": {
      "post": {
        "tags": [
          "Comments"
        ],
        "summary": "Trash comment",
        "description": "Move a comment to the trash.",
        "operationId": "trashComment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the comment to trash.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "Trash",
        "x-method": "POST",
        "x-path": "/api/comments/{id}/trash",
        "x-curl": "curl -X POST {WEAVY-URL}/api/comments/1/trash\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10105
      }
    },
    "/api/comments/{id}/restore": {
      "post": {
        "tags": [
          "Comments"
        ],
        "summary": "Restore comment",
        "description": "Restore a comment from the trash.",
        "operationId": "restoreComment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the comment to restore.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "Restore",
        "x-method": "POST",
        "x-path": "/api/comments/{id}/restore",
        "x-curl": "curl -X POST {WEAVY-URL}/api/comments/1/restore\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10207
      }
    },
    "/api/comments": {
      "get": {
        "tags": [
          "Comments"
        ],
        "summary": "List comments",
        "description": "List comments.",
        "operationId": "listComments",
        "parameters": [
          {
            "name": "around",
            "in": "query",
            "description": "A comment id. Used to find results \"around\" a specific comment.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfCommentOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Comments",
        "x-action": "List",
        "x-method": "GET",
        "x-path": "/api/comments",
        "x-curl": "curl {WEAVY-URL}/api/comments\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 504
      }
    },
    "/api/directories": {
      "post": {
        "tags": [
          "Directories"
        ],
        "summary": "Create directory",
        "description": "Creates a user directory.",
        "operationId": "createDirectory",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DirectoryIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DirectoryIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DirectoryIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DirectoryIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DirectoryOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Directories",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/directories",
        "x-curl": "curl {WEAVY-URL}/api/directories\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'name': 'acme' }\"",
        "x-order": 106
      },
      "get": {
        "tags": [
          "Directories"
        ],
        "summary": "List directories",
        "description": "List directories.",
        "operationId": "listDirectories",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfDirectoryOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Directories",
        "x-action": "List",
        "x-method": "GET",
        "x-path": "/api/directories",
        "x-curl": "curl {WEAVY-URL}/api/directories?take=25&q=acme\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 504
      }
    },
    "/api/directories/{dir}": {
      "get": {
        "tags": [
          "Directories"
        ],
        "summary": "Get directory",
        "description": "Get a directory.",
        "operationId": "getDirectory",
        "parameters": [
          {
            "name": "dir",
            "in": "path",
            "description": "Directory identifier (`id` or `name`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DirectoryOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Directories",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/directories/{dir}",
        "x-curl": "curl {WEAVY-URL}/api/directories/acme\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 203
      },
      "patch": {
        "tags": [
          "Directories"
        ],
        "summary": "Update directory",
        "description": "Update (rename) a directory.",
        "operationId": "updateDirectory",
        "parameters": [
          {
            "name": "dir",
            "in": "path",
            "description": "Directory identifier (`id` or `name`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DirectoryUp"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DirectoryUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DirectoryUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DirectoryUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DirectoryOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Directories",
        "x-action": "Update",
        "x-method": "PATCH",
        "x-path": "/api/directories/{dir}",
        "x-curl": "curl -X PATCH {WEAVY-URL}/api/directories/acme\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'name': 'ACME_CORPORATION' }\"",
        "x-order": 306
      },
      "delete": {
        "tags": [
          "Directories"
        ],
        "summary": "Delete directory",
        "description": "Delete a directory.",
        "operationId": "deleteDirectory",
        "parameters": [
          {
            "name": "dir",
            "in": "path",
            "description": "Directory identifier (`id` or `name`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Directories",
        "x-action": "Delete",
        "x-method": "DELETE",
        "x-path": "/api/directories/{dir}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/directories/acme\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 10306
      }
    },
    "/api/directories/{dir}/members": {
      "get": {
        "tags": [
          "Directories"
        ],
        "summary": "List directory members",
        "description": "List directory members.",
        "operationId": "listDirectoryMembers",
        "parameters": [
          {
            "name": "dir",
            "in": "path",
            "description": "Directory identifier (`id` or `name`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "autocomplete",
            "in": "query",
            "description": "`true` (default) to use \"autocomplete\" search, otherwise `false`.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "agent",
            "in": "query",
            "description": "Should AI agents be listed or not? When unspecified all types of users are listed.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "directory",
            "in": "query",
            "description": "Directory identifier (`id` or `name`). When unspecified users from all directories are listed.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "system",
            "in": "query",
            "description": "Include system users in the result?",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfUserOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Directories",
        "x-action": "ListMembers",
        "x-method": "GET",
        "x-path": "/api/directories/{dir}/members",
        "x-curl": "curl {WEAVY-URL}/api/directories/acme/members\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 511
      },
      "put": {
        "tags": [
          "Directories"
        ],
        "summary": "Add directory members",
        "description": "Add multiple directory members.",
        "operationId": "addDirectoryMembers",
        "parameters": [
          {
            "name": "dir",
            "in": "path",
            "description": "Directory identifier (`id` or `name`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "User identifiers (`id` or `uid`) of members to add.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Directories",
        "x-action": "AddMembers",
        "x-method": "PUT",
        "x-path": "/api/directories/{dir}/members",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/directories/acme/members\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"['bugs-bunny', 'daffy-duck']\"",
        "x-order": 610
      },
      "delete": {
        "tags": [
          "Directories"
        ],
        "summary": "Remove directory members",
        "description": "Remove multiple directory members.",
        "operationId": "removeDirectoryMembers",
        "parameters": [
          {
            "name": "dir",
            "in": "path",
            "description": "Directory identifier (`id` or `name`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "User identifiers (`id` or `uid`) of members to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Directories",
        "x-action": "RemoveMembers",
        "x-method": "DELETE",
        "x-path": "/api/directories/{dir}/members",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/directories/acme/members\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"['bugs-bunny', 'daffy-duck']\"",
        "x-order": 713
      }
    },
    "/api/directories/{dir}/members/{user}": {
      "put": {
        "tags": [
          "Directories"
        ],
        "summary": "Add directory member",
        "description": "Add a directory member.",
        "operationId": "addDirectoryMember",
        "parameters": [
          {
            "name": "dir",
            "in": "path",
            "description": "Directory identifier (`id` or `name`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`) of member to add.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Directories",
        "x-action": "AddMember",
        "x-method": "PUT",
        "x-path": "/api/directories/{dir}/members/{user}",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/directories/acme/members/bugs-bunny\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 609
      },
      "delete": {
        "tags": [
          "Directories"
        ],
        "summary": "Remove directory member",
        "description": "Remove a directory member.",
        "operationId": "removeDirectoryMember",
        "parameters": [
          {
            "name": "dir",
            "in": "path",
            "description": "Directory identifier (`id` or `name`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`) of member to remove.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Directories",
        "x-action": "RemoveMember",
        "x-method": "DELETE",
        "x-path": "/api/directories/{dir}/members/{user}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/directories/acme/members/bugs-bunny\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 712
      }
    },
    "/api/embeds/{id}": {
      "get": {
        "tags": [
          "Embeds"
        ],
        "summary": "Get embed",
        "description": "Get an embed by id.",
        "operationId": "getEmbed",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of embed.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmbedOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Embeds",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/embeds/{id}",
        "x-curl": "curl {WEAVY-URL}/api/embeds/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 203
      }
    },
    "/api/embeds": {
      "get": {
        "tags": [
          "Embeds"
        ],
        "summary": "Get embed for url",
        "description": "Get an embed for the specified url.",
        "operationId": "getEmbedForUrl",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "description": "The URL to retrieve embedding information for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmbedOut"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmbedOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Embeds",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/embeds",
        "x-curl": "curl {WEAVY-URL}/api/embeds?url=https%3A%2F%2Fbaconipsum.com\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 203
      },
      "post": {
        "tags": [
          "Embeds"
        ],
        "summary": "Create embed",
        "description": "Create an embed.",
        "operationId": "createEmbed",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/EmbedIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmbedIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EmbedIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EmbedIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmbedOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Embeds",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/embeds",
        "x-curl": "curl {WEAVY-URL}/api/embeds\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'type': 'link', 'title': 'Example', 'description': 'An example embed', 'url': 'https://www.example.com' }\"",
        "x-order": 106
      }
    },
    "/api/apps/{app}/files": {
      "post": {
        "tags": [
          "Files"
        ],
        "summary": "Create file",
        "description": "Creates a new file in the specified Files app.",
        "operationId": "createFile",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/FileIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FileIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FileIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileOut"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/apps/{app}/files",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-files/files\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'blob_id': 1 }\"",
        "x-order": 106
      },
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List app files",
        "description": "List files in the specified Files app.",
        "operationId": "listAppFiles",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "around",
            "in": "query",
            "description": "A file id. Used to find results \"around\" a specific file.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfFileOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "ListAppFiles",
        "x-method": "GET",
        "x-path": "/api/apps/{app}/files",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-files/files?take=25\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 512
      }
    },
    "/api/files/{id}": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Get file",
        "description": "Get file metadata.",
        "operationId": "getFile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "File id",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "`true` to return file even if trashed.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/files/{id}",
        "x-curl": "curl {WEAVY-URL}/api/files/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 203
      },
      "patch": {
        "tags": [
          "Files"
        ],
        "summary": "Update file",
        "description": "Update file metadata.",
        "operationId": "updateFile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of file.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/FileUp"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FileUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FileUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "Update",
        "x-method": "PATCH",
        "x-path": "/api/files/{id}",
        "x-curl": "curl -X PATCH {WEAVY-URL}/api/files/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'name': 'filename.txt' }\"",
        "x-order": 306
      },
      "delete": {
        "tags": [
          "Files"
        ],
        "summary": "Delete file",
        "description": "Delete a file.",
        "operationId": "deleteFile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the file.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "Delete",
        "x-method": "DELETE",
        "x-path": "/api/files/{id}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/files/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10306
      }
    },
    "/api/files/{id}/versions/{rev}": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Get file revision",
        "description": "Get file revision.",
        "operationId": "getFileRevision",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "File id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "rev",
            "in": "path",
            "description": "Revision number.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "GetVersion",
        "x-method": "GET",
        "x-path": "/api/files/{id}/versions/{rev}",
        "x-curl": "curl {WEAVY-URL}/api/files/1/versions/2\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 210
      },
      "delete": {
        "tags": [
          "Files"
        ],
        "summary": "Delete file revision",
        "description": "Delete file revision.",
        "operationId": "deleteFileRevision",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "File id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "rev",
            "in": "path",
            "description": "File revision.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "DeleteVersion",
        "x-method": "DELETE",
        "x-path": "/api/files/{id}/versions/{rev}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/files/1/versions/2\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10313
      }
    },
    "/api/files/{id}/versions": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List file revisions",
        "description": "List revision history of a file.",
        "operationId": "listFileRevisions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "File id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfFileOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "GetVersions",
        "x-method": "GET",
        "x-path": "/api/files/{id}/versions",
        "x-curl": "curl {WEAVY-URL}/api/files/1/versions\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 211
      }
    },
    "/api/files/{id}/trash": {
      "post": {
        "tags": [
          "Files"
        ],
        "summary": "Trash file",
        "description": "Move a file to the trash.",
        "operationId": "trashFile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the file to trash.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "Trash",
        "x-method": "POST",
        "x-path": "/api/files/{id}/trash",
        "x-curl": "curl -X POST {WEAVY-URL}/api/files/1/trash\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10105
      }
    },
    "/api/files/{id}/restore": {
      "post": {
        "tags": [
          "Files"
        ],
        "summary": "Restore file",
        "description": "Restore a file from the trash.",
        "operationId": "restoreFile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the file to restore.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "Restore",
        "x-method": "POST",
        "x-path": "/api/files/{id}/restore",
        "x-curl": "curl -X POST {WEAVY-URL}/api/files/1/restore\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10207
      }
    },
    "/api/files/{id}/versions/{rev}/restore": {
      "post": {
        "tags": [
          "Files"
        ],
        "summary": "Restore file version",
        "description": "Restore a previous revision of a file to be the current.\r\nThis will create a new revision with the contents of the previous revision, but preserves all existing revisions.",
        "operationId": "restoreFileVersion",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "File id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "rev",
            "in": "path",
            "description": "Revision number.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "RestoreVersion",
        "x-method": "POST",
        "x-path": "/api/files/{id}/versions/{rev}/restore",
        "x-curl": "curl -X POST {WEAVY-URL}/api/files/1/versions/2/restore\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10214
      }
    },
    "/api/files": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List files",
        "description": "List files.",
        "operationId": "listFiles",
        "parameters": [
          {
            "name": "around",
            "in": "query",
            "description": "A file id. Used to find results \"around\" a specific file.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfFileOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "List",
        "x-method": "GET",
        "x-path": "/api/files",
        "x-curl": "curl {WEAVY-URL}/api/files\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 504
      }
    },
    "/api/comments/{id}/attachments": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List comment attachments",
        "description": "List files attached to the specified comment.",
        "operationId": "listCommentAttachments",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Comment id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "around",
            "in": "query",
            "description": "A file id. Used to find results \"around\" a specific file.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfFileOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "ListCommentAttachments",
        "x-method": "GET",
        "x-path": "/api/comments/{id}/attachments",
        "x-curl": "curl {WEAVY-URL}/api/comments/1/attachments\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 522
      }
    },
    "/api/messages/{id}/attachments": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List message attachments",
        "description": "List files attached to the specified message.",
        "operationId": "listMessageAttachments",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Message id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "around",
            "in": "query",
            "description": "A file id. Used to find results \"around\" a specific file.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfFileOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "ListMessageAttachments",
        "x-method": "GET",
        "x-path": "/api/messages/{id}/attachments",
        "x-curl": "curl {WEAVY-URL}/api/messages/1/attachments\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 522
      }
    },
    "/api/posts/{id}/attachments": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List post attachments",
        "description": "List files attached to the specified post.",
        "operationId": "listPostAttachments",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Post id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "around",
            "in": "query",
            "description": "A file id. Used to find results \"around\" a specific file.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfFileOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Files",
        "x-action": "ListPostAttachments",
        "x-method": "GET",
        "x-path": "/api/posts/{id}/attachments",
        "x-curl": "curl {WEAVY-URL}/api/posts/1/attachments\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 519
      }
    },
    "/api/meetings": {
      "post": {
        "tags": [
          "Meetings"
        ],
        "summary": "Create meeting",
        "description": "Creates a meeting.",
        "operationId": "createMeeting",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MeetingIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MeetingIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MeetingIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MeetingIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeetingOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Meetings",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/meetings",
        "x-curl": "curl {WEAVY-URL}/api/meetings\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'provider': 'zoom' }\"",
        "x-order": 106
      }
    },
    "/api/apps/{app}/messages": {
      "post": {
        "tags": [
          "Messages"
        ],
        "summary": "Create message",
        "description": "Creates a new message in the specified chat app.",
        "operationId": "createMessage",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MessageIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MessageIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MessageIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MessageIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Messages",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/apps/{app}/messages",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-chat/messages\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'text': 'This is a message' }\"",
        "x-order": 106
      },
      "get": {
        "tags": [
          "Messages"
        ],
        "summary": "List app messages",
        "description": "List messages in the specified app.",
        "operationId": "listAppMessages",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "around",
            "in": "query",
            "description": "A message id. Used to find results \"around\" a specific message.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfMessageOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Messages",
        "x-action": "ListMessages",
        "x-method": "GET",
        "x-path": "/api/apps/{app}/messages",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-chat/messages?take=25\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 512
      }
    },
    "/api/messages/{id}": {
      "get": {
        "tags": [
          "Messages"
        ],
        "summary": "Get message",
        "description": "Gets a message by id.",
        "operationId": "getMessage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the message.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "`true` to return message even if trashed.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Messages",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/messages/{id}",
        "x-curl": "curl {WEAVY-URL}/api/messages/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 203
      },
      "patch": {
        "tags": [
          "Messages"
        ],
        "summary": "Update message",
        "description": "Updates a message.",
        "operationId": "updateMessage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the message.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MessageUp"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MessageUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MessageUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MessageUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Messages",
        "x-action": "Update",
        "x-method": "PATCH",
        "x-path": "/api/messages/{id}",
        "x-curl": "curl -X PATCH {WEAVY-URL}/api/messages/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'text': 'This is an updated message' }\"",
        "x-order": 306
      },
      "delete": {
        "tags": [
          "Messages"
        ],
        "summary": "Delete message",
        "description": "Permanently delete a message.",
        "operationId": "deleteMessage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the message.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Messages",
        "x-action": "Delete",
        "x-method": "DELETE",
        "x-path": "/api/messages/{id}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/messages/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10306
      }
    },
    "/api/messages/{id}/trash": {
      "post": {
        "tags": [
          "Messages"
        ],
        "summary": "Trash message",
        "description": "Move a message to the trash.",
        "operationId": "trashMessage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the message to trash.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Messages",
        "x-action": "Trash",
        "x-method": "POST",
        "x-path": "/api/messages/{id}/trash",
        "x-curl": "curl -X POST {WEAVY-URL}/api/messages/1/trash\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10105
      }
    },
    "/api/messages/{id}/restore": {
      "post": {
        "tags": [
          "Messages"
        ],
        "summary": "Restore message",
        "description": "Restore a message from the trash.",
        "operationId": "restoreMessage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the message to restore.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Messages",
        "x-action": "Restore",
        "x-method": "POST",
        "x-path": "/api/messages/{id}/restore",
        "x-curl": "curl -X POST {WEAVY-URL}/api/messages/1/restore\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10207
      }
    },
    "/api/messages": {
      "get": {
        "tags": [
          "Messages"
        ],
        "summary": "List messages",
        "description": "List messages.",
        "operationId": "listMessages",
        "parameters": [
          {
            "name": "around",
            "in": "query",
            "description": "A message id. Used to find results \"around\" a specific message.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfMessageOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Messages",
        "x-action": "List",
        "x-method": "GET",
        "x-path": "/api/messages",
        "x-curl": "curl {WEAVY-URL}/api/messages\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 504
      }
    },
    "/api/notifications": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Create notification",
        "description": "Sends a custom notification to the specified user.",
        "operationId": "createNotification",
        "requestBody": {
          "description": "Notification details.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/notifications",
        "x-curl": "curl {WEAVY-URL}/api/notifications\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'user': 'bugs-bunny', 'text': 'You've been notified!', 'metadata': { 'url': 'https://example.com' } }\"",
        "x-order": 106
      },
      "get": {
        "tags": [
          "Notifications"
        ],
        "summary": "List notifications",
        "description": "List notifications for the authenticated user.",
        "operationId": "listNotifications",
        "parameters": [
          {
            "name": "action",
            "in": "query",
            "description": "List notifications that were triggered by actions of this type, e.g. `message_created` or `comment_updated` etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "List notifications of specified type (`activity`, `mention` or `reaction`). When unspecified notifications of all types are listed.",
            "schema": {
              "$ref": "#/components/schemas/NotificationType"
            }
          },
          {
            "name": "unread",
            "in": "query",
            "description": "`true` lists unread notifications, `false` lists read notifications. When unspecified notifications are listed whether they are read or not.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "directory",
            "in": "query",
            "description": "Directory identifier (`id` or `name`). When specified only notifications from apps in the specified directory are listed.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfNotificationOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "List",
        "x-method": "GET",
        "x-path": "/api/notifications",
        "x-curl": "curl {WEAVY-URL}/api/notifications?take=25&unread=true\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 504
      }
    },
    "/api/notifications/{id}": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "summary": "Get notification",
        "description": "Get a notification by id.",
        "operationId": "getNotification",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Notification id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "`true` to return notification even if trashed.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/notifications/{id}",
        "x-curl": "curl {WEAVY-URL}/api/notifications/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 203
      },
      "delete": {
        "tags": [
          "Notifications"
        ],
        "summary": "Delete notification",
        "description": "Delete a notification.",
        "operationId": "deleteNotification",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Notification id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "Delete",
        "x-method": "DELETE",
        "x-path": "/api/notifications/{id}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/notifications/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10306
      }
    },
    "/api/notifications/{id}/mark": {
      "put": {
        "tags": [
          "Notifications"
        ],
        "summary": "Mark notification as read",
        "description": "Mark a notification as read.",
        "operationId": "markNotificationAsRead",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Notification id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "Mark",
        "x-method": "PUT",
        "x-path": "/api/notifications/{id}/mark",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/notifications/1/mark\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10004
      },
      "delete": {
        "tags": [
          "Notifications"
        ],
        "summary": "Mark notification as unread",
        "description": "Mark a notification as unread.",
        "operationId": "markNotificationAsUnread",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Notification id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "Unmark",
        "x-method": "DELETE",
        "x-path": "/api/notifications/{id}/mark",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/notifications/1/mark\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10006
      }
    },
    "/api/apps/{app}/notifications/mark": {
      "put": {
        "tags": [
          "Notifications"
        ],
        "summary": "Mark app notifications as read",
        "description": "Mark notifications for the authenticated user and app as read.",
        "operationId": "markAppNotificationsAsRead",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Optional id of last seen notification. When specified, this and previous notifications are marked as read, otherwise all notifications (uncluding yet unseen) are marked as read.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "SetMarker",
        "x-method": "PUT",
        "x-path": "/api/apps/{app}/notifications/mark",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/apps/acme-chat/notifications/mark\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"\r\n\r\ncurl -X PUT {WEAVY-URL}/api/apps/acme-chat/notifications/mark?id=3\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10009
      }
    },
    "/api/directories/{dir}/notifications/mark": {
      "put": {
        "tags": [
          "Notifications"
        ],
        "summary": "Mark directory notifications as read",
        "description": "Mark notifications for the authenticated user and directory as read.",
        "operationId": "markDirectoryNotificationsAsRead",
        "parameters": [
          {
            "name": "dir",
            "in": "path",
            "description": "Directory identifier (`id` or `name`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Optional id of last seen notification. When specified, this and previous notifications are marked as read, otherwise all notifications (including yet unseen) are marked as read.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "SetDirectoryMarker",
        "x-method": "PUT",
        "x-path": "/api/directories/{dir}/notifications/mark",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/directories/acme/notifications/mark\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"\r\n\r\ncurl -X PUT {WEAVY-URL}/api/directories/acme/notifications/mark?id=3\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10018
      }
    },
    "/api/notifications/mark": {
      "put": {
        "tags": [
          "Notifications"
        ],
        "summary": "Mark all notifications as read",
        "description": "Mark all notifications for the authenticated user as read.",
        "operationId": "markAllNotificationsAsRead",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "Optional id of last seen notification. When specified, this and previous notifications are marked as read, otherwise all notifications (uncluding yet unseen) are marked as read.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "SetMarker",
        "x-method": "PUT",
        "x-path": "/api/notifications/mark",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/notifications/mark\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"\r\n\r\ncurl -X PUT {WEAVY-URL}/api/notifications/mark?id=3\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10009
      }
    },
    "/api/apps/{app}/notifications": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "summary": "List app notifications",
        "description": "List the authenticated user's notifications related to the specified app.",
        "operationId": "listAppNotifications",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "action",
            "in": "query",
            "description": "List notifications that were triggered by actions of this type, e.g. `message_created` or `comment_updated` etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "List notifications of specified type (`activity`, `mention` or `reaction`). When unspecified notifications of all types are listed.",
            "schema": {
              "$ref": "#/components/schemas/NotificationType"
            }
          },
          {
            "name": "unread",
            "in": "query",
            "description": "`true` lists unread notifications, `false` lists read notifications. When unspecified notifications are listed whether they are read or not.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "directory",
            "in": "query",
            "description": "Directory identifier (`id` or `name`). When specified only notifications from apps in the specified directory are listed.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfNotificationOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "ListAppNotifications",
        "x-method": "GET",
        "x-path": "/api/apps/{app}/notifications",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-chat/notifications?take=25&unread=true\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 520
      }
    },
    "/api/apps/{app}/subscribe": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Subscribe to app",
        "description": "Subscribe authenticated user to notifications for an app.",
        "operationId": "subscribeToApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "SubscribeToApp",
        "x-method": "POST",
        "x-path": "/api/apps/{app}/subscribe",
        "x-curl": "curl -X POST {WEAVY-URL}/api/apps/acme-chat/subscribe\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 814
      }
    },
    "/api/apps/{app}/unsubscribe": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Unsubscribe from app",
        "description": "Unsubscribe authenticated user from notifications for an app.",
        "operationId": "unsubscribeFromApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "UnsubscribeFromApp",
        "x-method": "POST",
        "x-path": "/api/apps/{app}/unsubscribe",
        "x-curl": "curl -X POST {WEAVY-URL}/api/apps/acme-chat/unsubscribe\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 918
      }
    },
    "/api/comments/{id}/subscribe": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Subscribe to comment",
        "description": "Subscribe authenticated user to notifications for a comment.",
        "operationId": "subscribeToComment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the comment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "SubscribeToComment",
        "x-method": "POST",
        "x-path": "/api/comments/{id}/subscribe",
        "x-curl": "curl -X POST {WEAVY-URL}/api/comments/1/subscribe\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 818
      }
    },
    "/api/comments/{id}/unsubscribe": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Unsubscribe from comment",
        "description": "Unsubscribe authenticated user from notifications for a comment.",
        "operationId": "unsubscribeFromComment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the comment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "UnsubscribeFromComment",
        "x-method": "POST",
        "x-path": "/api/comments/{id}/unsubscribe",
        "x-curl": "curl -X POST {WEAVY-URL}/api/comments/1/unsubscribe\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 922
      }
    },
    "/api/files/{id}/subscribe": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Subscribe to file",
        "description": "Subscribe authenticated user to notifications for a file.",
        "operationId": "subscribeToFile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the file.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "SubscribeToFile",
        "x-method": "POST",
        "x-path": "/api/files/{id}/subscribe",
        "x-curl": "curl -X POST {WEAVY-URL}/api/files/1/subscribe\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 815
      }
    },
    "/api/files/{id}/unsubscribe": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Unsubscribe from file",
        "description": "Unsubscribe authenticated user from notifications for a file.",
        "operationId": "unsubscribeFromFile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the file.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "UnsubscribeFromFile",
        "x-method": "POST",
        "x-path": "/api/files/{id}/unsubscribe",
        "x-curl": "curl -X POST {WEAVY-URL}/api/files/1/unsubscribe\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 919
      }
    },
    "/api/messages/{id}/subscribe": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Subscribe to message",
        "description": "Subscribe authenticated user to notifications for a message.",
        "operationId": "subscribeToMessage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the message.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "SubscribeToMesssage",
        "x-method": "POST",
        "x-path": "/api/messages/{id}/subscribe",
        "x-curl": "curl -X POST {WEAVY-URL}/api/messages/1/subscribe\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 819
      }
    },
    "/api/messages/{id}/unsubscribe": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Unsubscribe from message",
        "description": "Unsubscribe authenticated user from notifications for a message.",
        "operationId": "unsubscribeFromMessage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the message.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "UnsubscribeFromMessage",
        "x-method": "POST",
        "x-path": "/api/messages/{id}/unsubscribe",
        "x-curl": "curl -X POST {WEAVY-URL}/api/messages/1/unsubscribe\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 922
      }
    },
    "/api/posts/{id}/subscribe": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Subscribe to post",
        "description": "Subscribe authenticated user to notifications for a post.",
        "operationId": "subscribeToPost",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the post.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "SubscribeToPost",
        "x-method": "POST",
        "x-path": "/api/posts/{id}/subscribe",
        "x-curl": "curl -X POST {WEAVY-URL}/api/posts/1/subscribe\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 815
      }
    },
    "/api/posts/{id}/unsubscribe": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Unsubscribe from post",
        "description": "Unsubscribe authenticated user from notifications for a post.",
        "operationId": "unsubscribeFromPost",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the post.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Notifications",
        "x-action": "UnsubscribeFromPost",
        "x-method": "POST",
        "x-path": "/api/posts/{id}/unsubscribe",
        "x-curl": "curl -X POST {WEAVY-URL}/api/posts/1/unsubscribe\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 919
      }
    },
    "/api/options/{id}": {
      "get": {
        "tags": [
          "Options"
        ],
        "summary": "Get poll option",
        "description": "Get details (including votes) for a poll option.",
        "operationId": "getPollOption",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the option.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PollOptionOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Options",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/options/{id}",
        "x-curl": "curl {WEAVY-URL}/api/options/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 203
      }
    },
    "/api/options/{id}/vote": {
      "post": {
        "tags": [
          "Options"
        ],
        "summary": "Vote on poll",
        "description": "Cast a vote (for the authenticated user) on a poll option.",
        "operationId": "voteOnPoll",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the poll option.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PollOptionOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Options",
        "x-action": "Vote",
        "x-method": "POST",
        "x-path": "/api/options/{id}/vote",
        "x-curl": "curl -X POST {WEAVY-URL}/api/options/1/vote\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10004
      }
    },
    "/api/comments/{id}/options": {
      "get": {
        "tags": [
          "Options"
        ],
        "summary": "List comment options",
        "description": "List poll options (including votes) for the specified comment.",
        "operationId": "listCommentOptions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the comment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfPollOptionOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Options",
        "x-action": "ListCommentOptions",
        "x-method": "GET",
        "x-path": "/api/comments/{id}/options",
        "x-curl": "curl {WEAVY-URL}/api/comments/1/options\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 518
      }
    },
    "/api/posts/{id}/options": {
      "get": {
        "tags": [
          "Options"
        ],
        "summary": "List post options",
        "description": "List poll options (including votes) for the specified post.",
        "operationId": "listPostOptions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the post.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfPollOptionOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Options",
        "x-action": "ListPostOptions",
        "x-method": "GET",
        "x-path": "/api/posts/{id}/options",
        "x-curl": "curl {WEAVY-URL}/api/posts/1/options\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 515
      }
    },
    "/api/messages/{id}/options": {
      "get": {
        "tags": [
          "Options"
        ],
        "summary": "List message options",
        "description": "List poll options (including votes) for the specified message.",
        "operationId": "listMessageOptions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the message.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfPollOptionOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Options",
        "x-action": "ListMessageOptions",
        "x-method": "GET",
        "x-path": "/api/messages/{id}/options",
        "x-curl": "curl {WEAVY-URL}/api/messages/1/options\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 518
      }
    },
    "/api/apps/{app}/posts": {
      "post": {
        "tags": [
          "Posts"
        ],
        "summary": "Create post",
        "description": "Creates a new post in the specified posts app.",
        "operationId": "createPost",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PostIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Posts",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/apps/{app}/posts",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-posts/posts\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'text': 'This is a post' }\"",
        "x-order": 106
      },
      "get": {
        "tags": [
          "Posts"
        ],
        "summary": "List app posts",
        "description": "List posts in the specified posts app.",
        "operationId": "listAppPosts",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "app",
            "in": "query",
            "description": "App identifier (`id` or `uid`)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "before",
            "in": "query",
            "description": "Used to find posts with ids less then than a specific post id.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "Used to find posts with ids greater than a specific post id.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "around",
            "in": "query",
            "description": "A post id. Used to find results \"around\" a specific post.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "following",
            "in": "query",
            "description": "When `true`, returns posts by users the authenticated user is following.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "out",
            "in": "query",
            "description": "Overrides the default output format. Possible values are `summary` and `details`.",
            "schema": {
              "$ref": "#/components/schemas/OutputMode"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfPostOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Posts",
        "x-action": "ListAppPosts",
        "x-method": "GET",
        "x-path": "/api/apps/{app}/posts",
        "x-curl": "curl {WEAVY-URL}/api/apps/acme-posts/posts?take=25\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 512
      }
    },
    "/api/posts/{id}": {
      "get": {
        "tags": [
          "Posts"
        ],
        "summary": "Get post",
        "description": "Gets a post by id.",
        "operationId": "getPost",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the post.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "`true` to return post even if trashed.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Posts",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/posts/{id}",
        "x-curl": "curl {WEAVY-URL}/api/posts/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 203
      },
      "patch": {
        "tags": [
          "Posts"
        ],
        "summary": "Update post",
        "description": "Updates a post.",
        "operationId": "updatePost",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the post.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PostUp"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Posts",
        "x-action": "Update",
        "x-method": "PATCH",
        "x-path": "/api/posts/{id}",
        "x-curl": "curl -X PATCH {WEAVY-URL}/api/posts/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"\r\n--json \"{ 'text': 'This is an updated post' }\"",
        "x-order": 306
      },
      "delete": {
        "tags": [
          "Posts"
        ],
        "summary": "Delete post",
        "description": "Delete a post.",
        "operationId": "deletePost",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the post.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Posts",
        "x-action": "Delete",
        "x-method": "DELETE",
        "x-path": "/api/posts/{id}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/posts/1\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10306
      }
    },
    "/api/posts/{id}/trash": {
      "post": {
        "tags": [
          "Posts"
        ],
        "summary": "Trash post",
        "description": "Move a post to the trash.",
        "operationId": "trashPost",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the post to trash.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Posts",
        "x-action": "Trash",
        "x-method": "POST",
        "x-path": "/api/posts/{id}/trash",
        "x-curl": "curl -X POST {WEAVY-URL}/api/posts/1/trash\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 10105
      }
    },
    "/api/posts/{id}/restore": {
      "post": {
        "tags": [
          "Posts"
        ],
        "summary": "Restore post",
        "description": "Restore a post from the trash.",
        "operationId": "restorePost",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the post to restore.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Posts",
        "x-action": "Restore",
        "x-method": "POST",
        "x-path": "/api/posts/{id}/restore",
        "x-curl": "curl -X POST {WEAVY-URL}/api/posts/1/restore\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 10207
      }
    },
    "/api/posts": {
      "get": {
        "tags": [
          "Posts"
        ],
        "summary": "List posts",
        "description": "List posts.",
        "operationId": "listPosts",
        "parameters": [
          {
            "name": "app",
            "in": "query",
            "description": "One or more app identifiers (`id` or `uid`). Used to find posts in specific apps.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "before",
            "in": "query",
            "description": "Used to find posts with ids less then than a specific post id.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "Used to find posts with ids greater than a specific post id.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "around",
            "in": "query",
            "description": "A post id. Used to find results \"around\" a specific post.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "following",
            "in": "query",
            "description": "When `true`, returns posts by users the authenticated user is following.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "out",
            "in": "query",
            "description": "Overrides the default output format. Possible values are `summary` and `details`.",
            "schema": {
              "$ref": "#/components/schemas/OutputMode"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfPostOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Posts",
        "x-action": "List",
        "x-method": "GET",
        "x-path": "/api/posts",
        "x-curl": "curl {WEAVY-URL}/api/posts\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 504
      }
    },
    "/api/comments/{id}/reactions": {
      "post": {
        "tags": [
          "Reactions"
        ],
        "summary": "React to comment",
        "description": "Add reaction to a comment on behalf of the authenticated user.",
        "operationId": "addCommentReaction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Comment id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Reactions",
        "x-action": "CreateCommentReaction",
        "x-method": "POST",
        "x-path": "/api/comments/{id}/reactions",
        "x-curl": "curl {WEAVY-URL}/api/comments/1/reactions\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"\r\n--json \"{ 'content': '😍' }\"",
        "x-order": 121
      },
      "delete": {
        "tags": [
          "Reactions"
        ],
        "summary": "Unreact to comment",
        "description": "Delete authenticated user's reaction to a comment.",
        "operationId": "removeCommentReaction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Comment id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Reactions",
        "x-action": "DeleteCommentReaction",
        "x-method": "DELETE",
        "x-path": "/api/comments/{id}/reactions",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/comments/1/reactions\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10321
      },
      "get": {
        "tags": [
          "Reactions"
        ],
        "summary": "List comment reactions",
        "description": "List reactions for a comment.",
        "operationId": "listCommentReactions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Comment id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "content",
            "in": "query",
            "description": "Lists reactions with the specified emoji character. Omit this parameter to list all reactions.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfReactionOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Reactions",
        "x-action": "ListCommentReactions",
        "x-method": "GET",
        "x-path": "/api/comments/{id}/reactions",
        "x-curl": "curl {WEAVY-URL}/api/comments/1/reactions\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 520
      }
    },
    "/api/messages/{id}/reactions": {
      "post": {
        "tags": [
          "Reactions"
        ],
        "summary": "React to message",
        "description": "Add reaction to a message on behalf of the authenticated user.",
        "operationId": "addMessageReaction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Message id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Reactions",
        "x-action": "CreateMessageReaction",
        "x-method": "POST",
        "x-path": "/api/messages/{id}/reactions",
        "x-curl": "curl {WEAVY-URL}/api/messages/1/reactions\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"\r\n--json \"{ 'content': '😍' }\"",
        "x-order": 121
      },
      "delete": {
        "tags": [
          "Reactions"
        ],
        "summary": "Unreact to message",
        "description": "Delete authenticated user's reaction to a message.",
        "operationId": "removeMessageReaction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Message id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Reactions",
        "x-action": "DeleteMessageReaction",
        "x-method": "DELETE",
        "x-path": "/api/messages/{id}/reactions",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/messages/1/reactions\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10321
      },
      "get": {
        "tags": [
          "Reactions"
        ],
        "summary": "List message reactions",
        "description": "List reactions for a message.",
        "operationId": "listMessageReactions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Message id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "content",
            "in": "query",
            "description": "Lists reactions with the specified emoji character. Omit this parameter to list all reactions.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfReactionOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Reactions",
        "x-action": "ListMessageReactions",
        "x-method": "GET",
        "x-path": "/api/messages/{id}/reactions",
        "x-curl": "curl {WEAVY-URL}/api/messages/1/reactions\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 520
      }
    },
    "/api/posts/{id}/reactions": {
      "post": {
        "tags": [
          "Reactions"
        ],
        "summary": "React to post",
        "description": "Add reaction to a post on behalf of the authenticated user.",
        "operationId": "addPostReaction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Post id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Reactions",
        "x-action": "CreatePostReaction",
        "x-method": "POST",
        "x-path": "/api/posts/{id}/reactions",
        "x-curl": "curl {WEAVY-URL}/api/posts/1/reactions\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"\r\n--json \"{ 'content': '😍' }\"",
        "x-order": 118
      },
      "delete": {
        "tags": [
          "Reactions"
        ],
        "summary": "Unreact to post",
        "description": "Delete authenticated user's reaction to a post.",
        "operationId": "removePostReaction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Post id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Reactions",
        "x-action": "DeletePostReaction",
        "x-method": "DELETE",
        "x-path": "/api/posts/{id}/reactions",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/posts/1/reactions\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10318
      },
      "get": {
        "tags": [
          "Reactions"
        ],
        "summary": "List post reactions",
        "description": "List reactions for a post.",
        "operationId": "listPostReactions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Post id.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "content",
            "in": "query",
            "description": "Lists reactions with the specified emoji character. Omit this parameter to list all reactions.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfReactionOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Reactions",
        "x-action": "ListPostReactions",
        "x-method": "GET",
        "x-path": "/api/posts/{id}/reactions",
        "x-curl": "curl {WEAVY-URL}/api/posts/1/reactions\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 517
      }
    },
    "/api/apps/{app}/stars": {
      "post": {
        "tags": [
          "Stars"
        ],
        "summary": "Star app",
        "description": "Add a star to an app on behalf of the authenticated user.",
        "operationId": "starApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Stars",
        "x-action": "StarApp",
        "x-method": "POST",
        "x-path": "/api/apps/{app}/stars",
        "x-curl": "curl -X POST {WEAVY-URL}/api/apps/acme-chat/stars\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10007
      },
      "delete": {
        "tags": [
          "Stars"
        ],
        "summary": "Unstar app",
        "description": "Remove a star from an app on behalf of the authenticated user.",
        "operationId": "unstarApp",
        "parameters": [
          {
            "name": "app",
            "in": "path",
            "description": "App identifier (`id` or `uid`)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Stars",
        "x-action": "UnstarApp",
        "x-method": "DELETE",
        "x-path": "/api/apps/{app}/stars",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/apps/acme-chat/stars\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10009
      }
    },
    "/api/comments/{id}/stars": {
      "post": {
        "tags": [
          "Stars"
        ],
        "summary": "Star comment",
        "description": "Add a star to a comment on behalf of the authenticated user.",
        "operationId": "starComment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the comment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Stars",
        "x-action": "StarComment",
        "x-method": "POST",
        "x-path": "/api/comments/{id}/stars",
        "x-curl": "curl -X POST {WEAVY-URL}/api/comments/1/stars\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10011
      },
      "delete": {
        "tags": [
          "Stars"
        ],
        "summary": "Unstar comment",
        "description": "Remove a star from a comment on behalf of the authenticated user.",
        "operationId": "unstarComment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the comment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Stars",
        "x-action": "UnstarComment",
        "x-method": "DELETE",
        "x-path": "/api/comments/{id}/stars",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/comments/1/stars\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10013
      }
    },
    "/api/files/{id}/stars": {
      "post": {
        "tags": [
          "Stars"
        ],
        "summary": "Star file",
        "description": "Add a star to a file on behalf of the authenticated user.",
        "operationId": "starFile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the file.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Stars",
        "x-action": "StarFile",
        "x-method": "POST",
        "x-path": "/api/files/{id}/stars",
        "x-curl": "curl -X POST {WEAVY-URL}/api/files/1/stars\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10008
      },
      "delete": {
        "tags": [
          "Stars"
        ],
        "summary": "Unstar file",
        "description": "Remove a star from a file on behalf of the authenticated user.",
        "operationId": "unstarFile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the file.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Stars",
        "x-action": "UnstarFile",
        "x-method": "DELETE",
        "x-path": "/api/files/{id}/stars",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/files/1/stars\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10010
      }
    },
    "/api/messages/{id}/stars": {
      "post": {
        "tags": [
          "Stars"
        ],
        "summary": "Star message",
        "description": "Add a star to a message on behalf of the authenticated user.",
        "operationId": "starMessage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the message.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Stars",
        "x-action": "StarMessage",
        "x-method": "POST",
        "x-path": "/api/messages/{id}/stars",
        "x-curl": "curl -X POST {WEAVY-URL}/api/messages/1/stars\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10011
      },
      "delete": {
        "tags": [
          "Stars"
        ],
        "summary": "Unstar message",
        "description": "Remove a star from a message on behalf of the authenticated user.",
        "operationId": "unstarMessage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the message.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Stars",
        "x-action": "UnstarMessage",
        "x-method": "DELETE",
        "x-path": "/api/messages/{id}/stars",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/messages/1/stars\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10013
      }
    },
    "/api/posts/{id}/stars": {
      "post": {
        "tags": [
          "Stars"
        ],
        "summary": "Star post",
        "description": "Add a star to a post on behalf of the authenticated user.",
        "operationId": "starPost",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the post.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Stars",
        "x-action": "StarPost",
        "x-method": "POST",
        "x-path": "/api/posts/{id}/stars",
        "x-curl": "curl -X POST {WEAVY-URL}/api/posts/1/stars\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10008
      },
      "delete": {
        "tags": [
          "Stars"
        ],
        "summary": "Unstar post",
        "description": "Remove a star from a post on behalf of the authenticated user.",
        "operationId": "unstarPost",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the post.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Stars",
        "x-action": "UnstarPost",
        "x-method": "DELETE",
        "x-path": "/api/posts/{id}/stars",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/posts/1/stars\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10010
      }
    },
    "/api/stars": {
      "get": {
        "tags": [
          "Stars"
        ],
        "summary": "List stars",
        "description": "List items starred by the authenticated user.",
        "operationId": "listStars",
        "parameters": [
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfEntityOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Stars",
        "x-action": "List",
        "x-method": "GET",
        "x-path": "/api/stars",
        "x-curl": "curl {WEAVY-URL}/api/stars\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 504
      }
    },
    "/api/auth": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Authenticate user",
        "description": "Get user by username and password.",
        "operationId": "authenticateUser",
        "requestBody": {
          "description": ".",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AuthIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AuthIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "Authenticate",
        "x-method": "POST",
        "x-path": "/api/auth",
        "x-curl": "curl {WEAVY-URL}/api/auth\r\n--json \"{ 'username': 'bugs-bunny', 'password': 'p@55w0rd'}\"",
        "x-order": 10012
      }
    },
    "/api/users": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Create user",
        "description": "Create a user account.",
        "operationId": "createUser",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UserIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UserIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UserIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/users",
        "x-curl": "curl {WEAVY-URL}/api/users\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'uid': 'bugs-bunny', 'name': 'Bugs Bunny', 'directory': 'acme' }\"",
        "x-order": 106
      },
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "List users",
        "description": "List user accounts.",
        "operationId": "listUsers",
        "parameters": [
          {
            "name": "autocomplete",
            "in": "query",
            "description": "`true` (default) to use \"autocomplete\" search, otherwise `false`.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "agent",
            "in": "query",
            "description": "Should AI agents be listed or not? When unspecified all types of users are listed.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "directory",
            "in": "query",
            "description": "Directory identifier (`id` or `name`). When unspecified users from all directories are listed.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "system",
            "in": "query",
            "description": "Include system users in the result?",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfUserOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "List",
        "x-method": "GET",
        "x-path": "/api/users",
        "x-curl": "curl {WEAVY-URL}/api/users?take=25\r\n-H \"Authorization: Bearer {ACCESS-TOKEN | API-KEY}\"",
        "x-order": 504
      }
    },
    "/api/users/{user}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get user",
        "description": "Get user account with specified identifier.",
        "operationId": "getUser",
        "parameters": [
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "`true` to return user even if trashed.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/users/{user}",
        "x-curl": "curl {WEAVY-URL}/api/users/bugs-bunny\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 203
      },
      "patch": {
        "tags": [
          "Users"
        ],
        "summary": "Update user",
        "description": "Update a user account.",
        "operationId": "updateUser",
        "parameters": [
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UserUp"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UserUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UserUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "Update",
        "x-method": "PATCH",
        "x-path": "/api/users/{user}",
        "x-curl": "curl -X PATCH {WEAVY-URL}/api/users/bugs-bunny\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'name': 'Bugs Bunny' }\"",
        "x-order": 306
      },
      "delete": {
        "tags": [
          "Users"
        ],
        "summary": "Delete user",
        "description": "Permanently delete a user account and all profile data.\r\nContent that isn't considered profile information won’t be removed (this includes comments, files, messages and other data that the user has created or shared).",
        "operationId": "deleteUser",
        "parameters": [
          {
            "name": "user",
            "in": "path",
            "description": "Identifier (`id` or `uid`) of user to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "Delete",
        "x-method": "DELETE",
        "x-path": "/api/users/{user}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/users/bugs-bunny\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 10306
      }
    },
    "/api/user": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get authenticated user",
        "description": "Get the authenticated user.",
        "operationId": "getAuthenticatedUser",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "GetAuthenticated",
        "x-method": "GET",
        "x-path": "/api/user",
        "x-curl": "curl {WEAVY-URL}/api/user\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 216
      }
    },
    "/api/users/{user}/follow": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Follow user",
        "description": "Make the authenticated user follow the specified user.",
        "operationId": "followUser",
        "parameters": [
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "Follow",
        "x-method": "POST",
        "x-path": "/api/users/{user}/follow",
        "x-curl": "curl -X POST {WEAVY-URL}/api/users/bugs-bunny/follow\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10006
      }
    },
    "/api/users/{user}/unfollow": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Unfollow user",
        "description": "Make the authenticated user unfollow the specified user.",
        "operationId": "unfollowUser",
        "parameters": [
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "Unfollow",
        "x-method": "POST",
        "x-path": "/api/users/{user}/unfollow",
        "x-curl": "curl -X POST {WEAVY-URL}/api/users/bugs-bunny/unfollow\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 10008
      }
    },
    "/api/users/{uid}": {
      "put": {
        "tags": [
          "Users"
        ],
        "summary": "Upsert user",
        "description": "Update or insert user account. If an account with the specified `uid` is found it is updated, otherwise it is created.",
        "operationId": "upsertUser",
        "parameters": [
          {
            "name": "uid",
            "in": "path",
            "description": "Unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpsert"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpsert"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpsert"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserOut"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "Upsert",
        "x-method": "PUT",
        "x-path": "/api/users/{uid}",
        "x-curl": "curl -X PUT {WEAVY-URL}/api/users/bugs-bunny\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'name': 'Bugs Bunny', 'email': 'bugs@acme.corp\"",
        "x-order": 406
      }
    },
    "/api/users/{user}/trash": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Trash user",
        "description": "Move a user account to the trash.",
        "operationId": "trashUser",
        "parameters": [
          {
            "name": "user",
            "in": "path",
            "description": "Identifier (`id` or `uid`) of user to trash.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "Trash",
        "x-method": "POST",
        "x-path": "/api/users/{user}/trash",
        "x-curl": "curl -X POST {WEAVY-URL}/api/users/bugs-bunny/trash\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 10105
      }
    },
    "/api/users/{user}/restore": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Restore user",
        "description": "Restore a user account from the trash.",
        "operationId": "restoreUser",
        "parameters": [
          {
            "name": "user",
            "in": "path",
            "description": "Identifier (`id` or `uid`) of user to restore.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "Restore",
        "x-method": "POST",
        "x-path": "/api/users/{user}/restore",
        "x-curl": "curl -X POST {WEAVY-URL}/api/users/bugs-bunny/restore\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 10207
      }
    },
    "/api/users/{user}/tokens": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Issue access token",
        "description": "Issues an `access_token` for a user.",
        "operationId": "issueAccessToken",
        "parameters": [
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Optional token creation options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TokenIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TokenIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "IssueToken",
        "x-method": "POST",
        "x-path": "/api/users/{user}/tokens",
        "x-curl": "curl {WEAVY-URL}/api/users/bugs-bunny/tokens\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'expires_in': 7200 }\"",
        "x-order": 10010
      },
      "delete": {
        "tags": [
          "Users"
        ],
        "summary": "Revoke access token",
        "description": "Revoke all access tokens for the specified user account.",
        "operationId": "revokeAccessToken",
        "parameters": [
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "RevokeTokens",
        "x-method": "DELETE",
        "x-path": "/api/users/{user}/tokens",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/users/bugs-bunny/tokens\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 10012
      }
    },
    "/api/users/{user}/followers": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Followers",
        "description": "List followers of the specified user.",
        "operationId": "followers",
        "parameters": [
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfUserOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "ListFollowers",
        "x-method": "GET",
        "x-path": "/api/users/{user}/followers",
        "x-curl": "curl {WEAVY-URL}/api/users/{user}/followers\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 513
      }
    },
    "/api/users/{user}/following": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Following",
        "description": "List users that the specified user is following.",
        "operationId": "following",
        "parameters": [
          {
            "name": "user",
            "in": "path",
            "description": "User identifier (`id` or `uid`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfUserOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Users",
        "x-action": "ListFollowing",
        "x-method": "GET",
        "x-path": "/api/users/{user}/following",
        "x-curl": "curl {WEAVY-URL}/api/users/{user}/following\r\n-H \"Authorization: Bearer {ACCESS-TOKEN}\"",
        "x-order": 513
      }
    },
    "/api/webhooks": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List webhooks",
        "description": "Returns the list of registered webhooks.",
        "operationId": "listWebhooks",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfWebhookOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Webhooks",
        "x-action": "List",
        "x-method": "GET",
        "x-path": "/api/webhooks",
        "x-curl": "curl {WEAVY-URL}/api/webhooks\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 504
      },
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Register webhook",
        "description": "Registers a webhook.",
        "operationId": "registerWebhook",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookIn"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookIn"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookIn"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Webhooks",
        "x-action": "Create",
        "x-method": "POST",
        "x-path": "/api/webhooks",
        "x-curl": "curl {WEAVY-URL}/api/webhooks\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{'payload_url': 'https://www.example.com/webhooks/incoming', 'triggers': ['notifications']}\"",
        "x-order": 106
      }
    },
    "/api/webhooks/{id}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get webhook",
        "description": "Get a webhook by id.",
        "operationId": "getWebhook",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the hook.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Webhooks",
        "x-action": "Get",
        "x-method": "GET",
        "x-path": "/api/webhooks/{id}",
        "x-curl": "curl {WEAVY-URL}/api/webhooks/1\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 203
      },
      "patch": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Update webhook",
        "description": "Update a webhook registration.",
        "operationId": "updateWebhook",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the hook.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookUp"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookOut"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Webhooks",
        "x-action": "Update",
        "x-method": "PATCH",
        "x-path": "/api/webhooks/{id}",
        "x-curl": "curl -X PATCH {WEAVY-URL}/api/webhooks/1\r\n-H \"Authorization: Bearer {API-KEY}\"\r\n--json \"{ 'triggers': ['notifications', 'comments'] }\"",
        "x-order": 306
      },
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete webhook",
        "description": "Delete a webhook.",
        "operationId": "deleteWebhook",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the hook.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": { }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Webhooks",
        "x-action": "Delete",
        "x-method": "DELETE",
        "x-path": "/api/webhooks/{id}",
        "x-curl": "curl -X DELETE {WEAVY-URL}/api/webhooks/1\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 10306
      }
    },
    "/api/webhooks/{id}/deliveries": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List webhook deliveries",
        "description": "List webhook deliveries.",
        "operationId": "listWebhookDeliveries",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Webhook id",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "action",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "A string used to find matching items by name, e.g. `q=test`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "List items with the specified tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trashed",
            "in": "query",
            "description": "Indicates whether trashed items should be listed (default is `false`). Specify `null` to list both trashed and non-trashed items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "Specifies the sort order and direction for the listing, e.g. `order_by=id` or `order_by=id+desc`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip. Used together with `take` to return a specific range of items (for pagination).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Maximum number of items to return in the listing. Should be a value between `1` and `100`. Default is `25`.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "count_only",
            "in": "query",
            "description": "`true` to count the number of matching items instead of listing them; when specified the response will *only* contain the `count` property.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOutOfDeliveryOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-controller": "Webhooks",
        "x-action": "ListDeliveries",
        "x-method": "GET",
        "x-path": "/api/webhooks/{id}/deliveries",
        "x-curl": "curl {WEAVY-URL}/api/webhooks/1/deliveries?take=25\r\n-H \"Authorization: Bearer {API-KEY}\"",
        "x-order": 514
      }
    }
  },
  "components": {
    "schemas": {
      "Access": {
        "enum": [
          "none",
          "read",
          "write",
          "admin",
          null
        ]
      },
      "AgentFunctionIn": {
        "required": [
          "name",
          "description",
          "url"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "The name of the function."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Describes the purpose of the function to the agent."
          },
          "url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Url to the external API endpoint.",
            "format": "uri"
          },
          "method": {
            "type": [
              "null",
              "string"
            ],
            "description": "HTTP method to use when calling the endpoint (defaults to `GET`)."
          },
          "headers": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Headers to include in the request, e.g. `Authorization`, `Content-Type`, `User-Agent` etc."
          },
          "parameters": {
            "description": "A JSON schema object describing the parameters of the function (if any)."
          }
        },
        "description": "Represents a function definition that lets the agent interface with an external API endpoint."
      },
      "AgentFunctionOut": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "The name of the function."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Describes the functions purpose to the agent."
          },
          "method": {
            "type": [
              "null",
              "string"
            ],
            "description": "The HTTP method to use when calling the endpoint."
          },
          "url": {
            "type": [
              "null",
              "string"
            ],
            "description": "The API endpoint to call."
          },
          "headers": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Headers to include in the request, e.g. `Authorization`, `Content-Type`, `User-Agent` etc."
          },
          "parameters": {
            "description": "A JSON Schema object describing the function arguments (if any)."
          }
        },
        "description": "Represents a function definition that lets the agent interface with an external API endpoint."
      },
      "AgentFunctionUp": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "The name of the function."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Describes the purpose of the function to the agent."
          },
          "method": {
            "type": [
              "null",
              "string"
            ],
            "description": "HTTP method to use when calling the endpoint."
          },
          "url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Url to the external API endpoint."
          },
          "headers": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Headers to include in the request, e.g. `Authorization`, `Content-Type`, `User-Agent` etc."
          },
          "parameters": {
            "description": "A JSON schema object describing the parameters of the function (if any)."
          }
        },
        "description": "Represents a function definition that lets the agent interface with an external API endpoint."
      },
      "AgentIn": {
        "required": [
          "uid",
          "name",
          "provider",
          "model"
        ],
        "type": "object",
        "properties": {
          "uid": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Unique identifier (*cannot contain whitespace and must contain at least one non-digit*)."
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Agent name. Used in listings, @mentions etc."
          },
          "provider": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The AI provider for the agent, must be one of  `anthropic`, `gemini`, `kapa`, `openai` or `weavy`."
          },
          "model": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The model to use for the agent, e.g. \"gpt-5.4-mini\" or \"claude-sonnet-4-6\" etc."
          },
          "instructions": {
            "type": [
              "null",
              "string"
            ],
            "description": "High-level system instructions describing the desired agent behavior, e.g. main objectives, tone, response style etc."
          },
          "functions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/AgentFunctionIn"
            },
            "description": "A list of function definitions that lets the agent interface with external API endpoints."
          },
          "knowledge": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of files apps for agent's knowledge."
          },
          "web_search": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Allow the agent to search the web and answer questions with up-to-date information beyond its knowledge cutoff."
          },
          "max_tokens": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Maximum number of tokens to generate before stopping.",
            "format": "int32"
          },
          "picture": {
            "type": [
              "null",
              "string"
            ],
            "description": "Profile picture. Can be a public URL, a base64 encoded data URI or a blob id."
          },
          "directories": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "User directories for the agent (`id` or `name`)."
          },
          "comment": {
            "type": [
              "null",
              "string"
            ],
            "description": "Comment or other application-specific information about the agent."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the agent."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          }
        },
        "description": "Agent insert model."
      },
      "AgentOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "provider": {
            "type": [
              "null",
              "string"
            ],
            "description": "The agent provider."
          },
          "model": {
            "type": [
              "null",
              "string"
            ],
            "description": "The model to use for the agent, e.g. \"gemini-2.0-flash\"."
          },
          "instructions": {
            "type": [
              "null",
              "string"
            ],
            "description": "The prompt or system instructions for the agent."
          },
          "functions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Name of agent's functions."
          },
          "knowledge": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of file apps for agent's knowledge."
          },
          "web_search": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Can the agent use web search or not."
          },
          "max_tokens": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Maximum number of tokens to generate before stopping.",
            "format": "int32"
          },
          "avatar_url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Url to profile picture for agent."
          },
          "picture": {
            "description": "Gets (blob) meta data for the profile picture.",
            "$ref": "#/components/schemas/BlobOut"
          },
          "directories": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DirectoryOut"
            },
            "description": "Agent directories."
          },
          "comment": {
            "type": [
              "null",
              "string"
            ]
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "created_at": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "is_agent": {
            "type": "boolean",
            "description": "Indicates that this is an agent user."
          },
          "is_trashed": {
            "type": [
              "null",
              "boolean"
            ]
          }
        },
        "description": ""
      },
      "AgentUp": {
        "type": "object",
        "properties": {
          "uid": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Unique identifier (*cannot contain whitespace and must contain at least one non-digit*)."
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Agent name. Used in listings, @mentions etc."
          },
          "provider": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The agent provider to use, must be one of `openai`, `anthropic`, `gemini`, or `kapa`."
          },
          "model": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The model to use for the agent, e.g. \"gpt-5.4-mini\" or \"claude-sonnet-4-6\" etc."
          },
          "instructions": {
            "type": [
              "null",
              "string"
            ],
            "description": "High-level system instructions describing the desired agent behavior, e.g. main objectives, tone, response style etc."
          },
          "functions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/AgentFunctionIn"
            },
            "description": "A list of function definitions that lets the agent interface with external API endpoints."
          },
          "knowledge": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of files apps for agent's knowledge."
          },
          "web_search": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Allow the agent to search the web and answer questions with up-to-date information beyond its knowledge cutoff."
          },
          "max_tokens": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Maximum number of tokens to generate before stopping.",
            "format": "int32"
          },
          "picture": {
            "type": [
              "null",
              "string"
            ],
            "description": "Profile picture. Can be a public URL, a base64 encoded data URI or a blob id."
          },
          "directories": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "User directories for the agent (`id` or `name`)."
          },
          "comment": {
            "type": [
              "null",
              "string"
            ],
            "description": "Comment or other application-specific information about the agent."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the agent."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          }
        },
        "description": "Base model used when inserting/updating agents."
      },
      "AgentUpsert": {
        "type": "object",
        "properties": {
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique identifier (*cannot contain whitespace and must contain at least one non-digit*)."
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Agent name. Used in listings, @mentions etc."
          },
          "provider": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The agent provider to use, must be one of `openai`, `anthropic`, `gemini`, or `kapa`."
          },
          "model": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The model to use for the agent, e.g. \"gpt-5.4-mini\" or \"claude-sonnet-4-6\" etc."
          },
          "instructions": {
            "type": [
              "null",
              "string"
            ],
            "description": "High-level system instructions describing the desired agent behavior, e.g. main objectives, tone, response style etc."
          },
          "functions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/AgentFunctionIn"
            },
            "description": "A list of function definitions that lets the agent interface with external API endpoints."
          },
          "knowledge": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of files apps for agent's knowledge."
          },
          "web_search": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Allow the agent to search the web and answer questions with up-to-date information beyond its knowledge cutoff."
          },
          "max_tokens": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Maximum number of tokens to generate before stopping.",
            "format": "int32"
          },
          "picture": {
            "type": [
              "null",
              "string"
            ],
            "description": "Profile picture. Can be a public URL, a base64 encoded data URI or a blob id."
          },
          "directories": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "User directories for the agent (`id` or `name`)."
          },
          "comment": {
            "type": [
              "null",
              "string"
            ],
            "description": "Comment or other application-specific information about the agent."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the agent."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          }
        },
        "description": ""
      },
      "AppAccess": {
        "enum": [
          "none",
          "read",
          "write"
        ],
        "description": "Default access level for users that are <em>not</em> members. Defaults to `none`. \r\n* `none` = only members can access the app\r\n* `read` = authenticated users can see the app and it's content but only members can contribute\r\n* `write` = authenticated users have access to the app and are allowed to create content"
      },
      "AppIn": {
        "required": [
          "type"
        ],
        "type": "object",
        "properties": {
          "members": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "User identifiers (`id` or `uid`) of users to set as members when creating the app."
          },
          "type": {
            "type": [
              "null",
              "string"
            ],
            "description": "Type of app (`name` or `guid`)."
          },
          "uid": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "A string that uniquely identifies the app, for instance a product id or URL (*cannot contain whitespace and must contain at least one non-digit*)."
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Display name for the app."
          },
          "description": {
            "maxLength": 512,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "App description."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional properties to associate with the app, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`.",
            "example": ""
          },
          "picture": {
            "type": [
              "null",
              "string"
            ],
            "description": "An avatar picture. Can be a public URL, a base64 encoded data URI or a blob id."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the app."
          },
          "access": {
            "description": "Deafult access level for users that are not members. Defaults to `none`.",
            "$ref": "#/components/schemas/AppAccess"
          },
          "directory": {
            "type": [
              "null",
              "string"
            ],
            "description": "Id or name of a user directory. Used in combination with `access` to control who can access the app."
          }
        },
        "description": ""
      },
      "AppOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The app id.",
            "format": "int32"
          },
          "rev": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Revision number. Can be used to detect changes.",
            "format": "int64"
          },
          "type": {
            "type": [
              "null",
              "string"
            ],
            "description": "The app type.",
            "format": "uuid"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "The unique identifier for the app."
          },
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the name."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the description text."
          },
          "archive_url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Url to zip-archive with files in the app."
          },
          "avatar_url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets a thumbnail image."
          },
          "picture": {
            "description": "Gets (blob) meta data for the avatar picture.",
            "$ref": "#/components/schemas/BlobOut"
          },
          "last_message": {
            "description": "The last message in the app.",
            "$ref": "#/components/schemas/MessageOut"
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "access": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Access"
              }
            ]
          },
          "directory_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "members": {
            "description": "Gets the app members.",
            "$ref": "#/components/schemas/PagedListOutOfMemberOut"
          },
          "created_at": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time (UTC) when the app was created.",
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time (UTC) when the app was last updated.",
            "format": "date-time"
          },
          "is_pinned": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the authenticated user has pinned this app."
          },
          "is_starred": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the authenticated user has starred the app."
          },
          "is_subscribed": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the authenticated user has subscribed to the app."
          },
          "is_trashed": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Is the app trashed or not."
          },
          "is_unread": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the authenticated user has unread messages in the app."
          },
          "permissions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/Permission"
            },
            "description": "Gets app permissions for the authenticated user."
          }
        },
        "description": ""
      },
      "AppUp": {
        "type": "object",
        "properties": {
          "uid": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "A string that uniquely identifies the app, for instance a product id or URL (*cannot contain whitespace and must contain at least one non-digit*)."
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Display name for the app."
          },
          "description": {
            "maxLength": 512,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "App description."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional properties to associate with the app, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`.",
            "example": ""
          },
          "picture": {
            "type": [
              "null",
              "string"
            ],
            "description": "An avatar picture. Can be a public URL, a base64 encoded data URI or a blob id."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the app."
          },
          "access": {
            "description": "Deafult access level for users that are not members. Defaults to `none`.",
            "$ref": "#/components/schemas/AppAccess"
          },
          "directory": {
            "type": [
              "null",
              "string"
            ],
            "description": "Id or name of a user directory. Used in combination with `access` to control who can access the app."
          }
        },
        "description": "Model for updating apps."
      },
      "AppUpsert": {
        "required": [
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "type": [
              "null",
              "string"
            ],
            "description": "Type of app (`name` or `guid`)."
          },
          "uid": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "A string that uniquely identifies the app, for instance a product id or URL (*cannot contain whitespace and must contain at least one non-digit*)."
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Display name for the app."
          },
          "description": {
            "maxLength": 512,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "App description."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional properties to associate with the app, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`.",
            "example": ""
          },
          "picture": {
            "type": [
              "null",
              "string"
            ],
            "description": "An avatar picture. Can be a public URL, a base64 encoded data URI or a blob id."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the app."
          },
          "access": {
            "description": "Deafult access level for users that are not members. Defaults to `none`.",
            "$ref": "#/components/schemas/AppAccess"
          },
          "directory": {
            "type": [
              "null",
              "string"
            ],
            "description": "Id or name of a user directory. Used in combination with `access` to control who can access the app."
          }
        },
        "description": ""
      },
      "AuthIn": {
        "required": [
          "username",
          "password"
        ],
        "type": "object",
        "properties": {
          "username": {
            "type": [
              "null",
              "string"
            ],
            "description": "Username."
          },
          "password": {
            "type": [
              "null",
              "string"
            ],
            "description": "Password."
          }
        },
        "description": "User authentication model."
      },
      "BlobIn": {
        "required": [
          "provider",
          "link",
          "name",
          "size"
        ],
        "type": "object",
        "properties": {
          "provider": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets the provider name."
          },
          "link": {
            "maxLength": 2048,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets an url for viewing the blob."
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets the file name of the blob."
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets or sets the width, in pixels, of the blob (only for images).",
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets or sets the height, in pixels, of the blob (only for images).",
            "format": "int32"
          },
          "size": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets or sets the size, in bytes, of the file.",
            "format": "int64"
          },
          "media_type": {
            "maxLength": 128,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets the Media Type (https://www.iana.org/assignments/media-types/media-types.xhtml) of the file, e.g. \"image/png\"."
          },
          "download": {
            "maxLength": 2048,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets an url for downloading the blob."
          },
          "embed": {
            "maxLength": 2048,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets an url used for embedding the blob."
          },
          "raw": {
            "description": "Gets or sets the raw metadata from the provider."
          }
        },
        "description": "Model for creating (external) blobs."
      },
      "BlobOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "media_type": {
            "type": [
              "null",
              "string"
            ]
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "size": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "thumbnail_url": {
            "type": [
              "null",
              "string"
            ]
          },
          "raw": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "description": ""
      },
      "CommentIn": {
        "type": "object",
        "properties": {
          "blobs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of blobs to attach."
          },
          "embed_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of embed to attach.",
            "format": "int32"
          },
          "meeting_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of meeting to attach.",
            "format": "int32"
          },
          "options": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PollOptionIn"
            },
            "description": "List of poll options to attach."
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "The message text."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the item."
          }
        },
        "description": "Model for inserting comments."
      },
      "CommentOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the id of the entity.",
            "format": "int32"
          },
          "app": {
            "description": "The app where the message is located.",
            "$ref": "#/components/schemas/AppOut"
          },
          "parent": {
            "description": "The parent object of the message (if any).",
            "$ref": "#/components/schemas/EntityOut"
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the message text."
          },
          "html": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the message text as html."
          },
          "plain": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the message text with all formatting stripped."
          },
          "embed": {
            "description": "The EmbedOut MsgOut.Embed attached to the message.",
            "$ref": "#/components/schemas/EmbedOut"
          },
          "meeting": {
            "description": "The MeetingOut MsgOut.Meeting attached to the message.",
            "$ref": "#/components/schemas/MeetingOut"
          },
          "annotations": {
            "$ref": "#/components/schemas/PagedListOutOfFileOut"
          },
          "attachments": {
            "$ref": "#/components/schemas/PagedListOutOfFileOut"
          },
          "options": {
            "$ref": "#/components/schemas/PagedListOutOfPollOptionOut"
          },
          "reactions": {
            "description": "Gets reactions to the message.",
            "$ref": "#/components/schemas/PagedListOutOfReactionOut"
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Gets or sets additional metadata."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "is_starred": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the authenticated user has starred the entity."
          },
          "is_subscribed": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the authenticated user has subscribed to the entity."
          },
          "is_trashed": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "created_at": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets the date and time (UTC) the entity was created.",
            "format": "date-time"
          },
          "created_by": {
            "description": "Gets or sets the id of the user that created the entity.",
            "$ref": "#/components/schemas/UserOut"
          },
          "updated_at": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "updated_by": {
            "$ref": "#/components/schemas/UserOut"
          }
        },
        "description": ""
      },
      "CommentUp": {
        "type": "object",
        "properties": {
          "attachments": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of attached files."
          },
          "blobs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of additional blobs to attach."
          },
          "embed_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of embed to attach.",
            "format": "int32"
          },
          "meeting_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of meeting to attach.",
            "format": "int32"
          },
          "options": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PollOptionUp"
            },
            "description": "List of poll options for the item."
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "The message text."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the item."
          }
        },
        "description": "Model for updating comments."
      },
      "DeliveryOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Unique identifier of the webhook delivery.",
            "format": "int32"
          },
          "guid": {
            "type": "string",
            "description": "Gets the unique delivery id.",
            "format": "uuid"
          },
          "event_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Unique identifier for the event (shared with all deliveries for all webhooks that subscribe to this event).",
            "format": "int32"
          },
          "action": {
            "type": [
              "null",
              "string"
            ],
            "description": "The event that triggered the delivery."
          },
          "delivered_at": {
            "type": "string",
            "description": "Time when the webhook delivery occurred.",
            "format": "date-time"
          },
          "duration": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Time spent delivering (in seconds).",
            "format": "double"
          },
          "status_code": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Status code received when delivery was made, e.g. 200.",
            "format": "int32"
          },
          "status": {
            "type": [
              "null",
              "string"
            ],
            "description": "The response returned after attempting the delivery, e.g. \"OK\"."
          }
        },
        "description": "Delivery made by a webhook, without request and response information."
      },
      "DirectoryIn": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "A unique directory name (*cannot contain whitespace and must contain at least one non-digit*)."
          }
        },
        "description": "Model for creating user directory."
      },
      "DirectoryOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "members": {
            "description": "Gets the directory members.",
            "$ref": "#/components/schemas/PagedListOutOfUserOut"
          }
        },
        "description": ""
      },
      "DirectoryUp": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "A unique directory name (*cannot contain whitespace and must contain at least one non-digit*)."
          }
        },
        "description": "Model for updating user directory."
      },
      "EmbedIn": {
        "required": [
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "description": "The type of embed.",
            "$ref": "#/components/schemas/EmbedType"
          },
          "title": {
            "type": [
              "null",
              "string"
            ],
            "description": "The title describing the resource."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets a description for the resource."
          },
          "image": {
            "type": [
              "null",
              "string"
            ],
            "description": "The embed image. Can be a public URL, a base64 encoded data URI or a blob id."
          },
          "url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Url to the embedded resource (when applicable)."
          },
          "actions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Optional embed actions (when type is \"link\"). Will be rendered as buttons in the embed card, e.g. [\"View\", \"Share\", \"Download\"]."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "html": {
            "type": [
              "null",
              "string"
            ],
            "description": "The html required to display the resource (when type is \"rich\" or \"video\"). Must be a single &lt;iframe&gt; element."
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The width in pixels of the embed (when type is \"rich\" or \"video\").",
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The height in pixels of the embed (when type is \"rich\" or \"video\").",
            "format": "int32"
          }
        },
        "description": ""
      },
      "EmbedOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "type": {
            "description": "Gets the type of embed.",
            "$ref": "#/components/schemas/EmbedType"
          },
          "title": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the title describing the resource."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets a description for the resource."
          },
          "image": {
            "description": "Gets (blob) meta data for the embed image.",
            "$ref": "#/components/schemas/BlobOut"
          },
          "url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Url to the embedded resource (when applicable), e.g. the \"scraped\" url."
          },
          "thumbnail_url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets an url to a thumbnail image representing the resource."
          },
          "actions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Name of optional card actions (when type is \"link\")."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata."
          },
          "author_name": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the name of the author/owner of the resource."
          },
          "author_url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets an url for the author/owner of the resource."
          },
          "provider_name": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the name of the resource provider."
          },
          "provider_url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the url of the resource provider."
          },
          "html": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the html required to display the resource (when type is \"rich\" or \"video\")."
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the width in pixels of the embed (when type is \"rich\" or \"video\").",
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the height in pixels of the embed (when type is \"rich\" or \"video\").",
            "format": "int32"
          }
        },
        "description": ""
      },
      "EmbedType": {
        "enum": [
          "link",
          "photo",
          "rich",
          "video"
        ],
        "description": "Indicates the type of embed."
      },
      "EntityOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "type": {
            "$ref": "#/components/schemas/EntityType"
          },
          "app": {
            "$ref": "#/components/schemas/AppOut"
          },
          "parent": {
            "description": "The parent object (if any).",
            "$ref": "#/components/schemas/EntityOut"
          }
        },
        "description": ""
      },
      "EntityType": {
        "enum": [
          "app",
          "file",
          "message",
          "user",
          "comment",
          "post"
        ],
        "description": "Enum for entity types."
      },
      "FileIn": {
        "required": [
          "blob_id"
        ],
        "type": "object",
        "properties": {
          "blob_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of blob containing content and metadata for the file.",
            "format": "int32"
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "File name. When not specified the file will get the name of the underlying blob."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the file."
          },
          "replace": {
            "type": "boolean",
            "description": "`true` to force an existing file with the same name to be overwritten (otherwise a `409 Conflict` response will be produced)."
          }
        },
        "description": "Model for creating files."
      },
      "FileOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "File identifier.",
            "format": "int32"
          },
          "rev": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Revision number. Can be used to detect changes.",
            "format": "int64"
          },
          "app": {
            "description": "The app where the file is located.",
            "$ref": "#/components/schemas/AppOut"
          },
          "parent": {
            "description": "The parent object of the file (if any).",
            "$ref": "#/components/schemas/EntityOut"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "kind": {
            "type": [
              "null",
              "string"
            ]
          },
          "media_type": {
            "type": [
              "null",
              "string"
            ]
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "size": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "provider": {
            "type": [
              "null",
              "string"
            ]
          },
          "raw": {
            "type": [
              "null",
              "string"
            ]
          },
          "download_url": {
            "type": [
              "null",
              "string"
            ]
          },
          "application_url": {
            "type": [
              "null",
              "string"
            ]
          },
          "embed_url": {
            "type": [
              "null",
              "string"
            ]
          },
          "external_url": {
            "type": [
              "null",
              "string"
            ]
          },
          "preview_format": {
            "$ref": "#/components/schemas/PreviewFormat"
          },
          "preview_url": {
            "type": [
              "null",
              "string"
            ]
          },
          "thumbnail_url": {
            "type": [
              "null",
              "string"
            ]
          },
          "created_at": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "created_by": {
            "$ref": "#/components/schemas/UserOut"
          },
          "updated_at": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "updated_by": {
            "$ref": "#/components/schemas/UserOut"
          },
          "comments": {
            "$ref": "#/components/schemas/PagedListOutOfCommentOut"
          },
          "is_starred": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "is_subscribed": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "is_trashed": {
            "type": [
              "null",
              "boolean"
            ]
          }
        },
        "description": ""
      },
      "FileUp": {
        "type": "object",
        "properties": {
          "blob_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of blob containing content and metadata for the file.",
            "format": "int32"
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The file name."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the file."
          },
          "backup": {
            "type": "boolean",
            "description": "`true` to add previous version to version history, otherwise `false` (default)."
          }
        },
        "description": "Model for updating files."
      },
      "McpServerIn": {
        "required": [
          "name",
          "url"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "A name for the MCP server, used to identify it in tool calls."
          },
          "url": {
            "type": [
              "null",
              "string"
            ],
            "description": "The URL for the MCP server.",
            "format": "uri"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional description of the MCP server, used to provide more context."
          },
          "allowed_tools": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "List of allowed tool names."
          },
          "approval_mode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Specifies whether the MCP server's tools require approval. Can be one of `always` or `never`."
          },
          "headers": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional HTTP headers to send to the MCP server. Use for authentication or other purposes."
          }
        },
        "description": "Represents a MCP server configuration."
      },
      "McpServerOut": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "The name of the remote MCP server."
          },
          "url": {
            "type": [
              "null",
              "string"
            ],
            "description": "The URL for the MCP server."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional description for the MCP server, used to provide more context."
          },
          "allowed_tools": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "List of allowed tool names."
          },
          "approval_mode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Specifies whether the MCP server's tools require approval. Can be one of `always` or `never`."
          },
          "headers": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional HTTP headers to send to the MCP server. Use for authentication or other purposes."
          }
        },
        "description": "Represents a MCP server configuration."
      },
      "McpServerUp": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "A name for this MCP server, used to identify it in tool calls."
          },
          "url": {
            "type": [
              "null",
              "string"
            ],
            "description": "The URL for the MCP server."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional description of the MCP server, used to provide more context."
          },
          "allowed_tools": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "List of allowed tool names."
          },
          "approval_mode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Specifies whether the MCP server's tools require approval. Can be one of `always` or `never`."
          },
          "headers": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional HTTP headers to send to the MCP server. Use for authentication or other purposes."
          }
        },
        "description": "Represents a MCP server configuration."
      },
      "MeetingIn": {
        "required": [
          "join_url"
        ],
        "type": "object",
        "properties": {
          "provider": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Name of the meeting provider, e.g. \"Zoom\", \"Teams\", \"Google Meet\", \"Webex\" etc."
          },
          "provider_id": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Provider specific id of the meeting."
          },
          "join_url": {
            "maxLength": 2048,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Url to join the meeting."
          }
        },
        "description": ""
      },
      "MeetingOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "provider": {
            "type": [
              "null",
              "string"
            ]
          },
          "provider_id": {
            "type": [
              "null",
              "string"
            ]
          },
          "join_url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Url to join the meeting."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Code to join the meeting."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "description": ""
      },
      "MemberAccess": {
        "enum": [
          "none",
          "read",
          "write",
          "admin"
        ],
        "description": "Optional access level for member. Defaults to `write` when not specified.\r\n* `none` = cannot access the app\r\n* `read` = can see the app and it's content but can cannot contribute\r\n* `write` = access to the app and is allowed to create content\r\n* `admin` = can manage the app, including deleting and managing members."
      },
      "MemberIn": {
        "type": "object",
        "properties": {
          "user": {
            "type": [
              "null",
              "string"
            ],
            "description": "User identifier (`id` or `uid`)."
          },
          "access": {
            "description": "Optional access level for member (`none`, `read`, `write`). Defaults to `write` when not specified.",
            "$ref": "#/components/schemas/MemberAccess"
          }
        },
        "description": ""
      },
      "MemberOptions": {
        "type": "object",
        "properties": {
          "access": {
            "description": "Optional access level for member (`none`, `read`, `write`). Defaults to `write` when not specified.",
            "$ref": "#/components/schemas/MemberAccess"
          }
        },
        "description": ""
      },
      "MemberOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "avatar_url": {
            "type": [
              "null",
              "string"
            ]
          },
          "access": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Access"
              }
            ]
          },
          "marked_at": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time (UTC) when member set the read marker.",
            "format": "date-time"
          },
          "marked_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of the last read message.",
            "format": "int32"
          },
          "presence": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "The presence status of the user.",
                "$ref": "#/components/schemas/PresenceStatus"
              }
            ]
          },
          "comment": {
            "type": [
              "null",
              "string"
            ]
          },
          "is_agent": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Indicates whether the member is an AI agent."
          }
        },
        "description": ""
      },
      "MessageIn": {
        "type": "object",
        "properties": {
          "blobs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of blobs to attach."
          },
          "embed_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of embed to attach.",
            "format": "int32"
          },
          "meeting_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of meeting to attach.",
            "format": "int32"
          },
          "options": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PollOptionIn"
            },
            "description": "List of poll options to attach."
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "The message text."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the item."
          }
        },
        "description": "Model for inserting messages."
      },
      "MessageOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the id of the entity.",
            "format": "int32"
          },
          "app": {
            "description": "The app where the message is located.",
            "$ref": "#/components/schemas/AppOut"
          },
          "parent": {
            "description": "The parent object of the message (if any).",
            "$ref": "#/components/schemas/EntityOut"
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the message text."
          },
          "html": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the message text as html."
          },
          "plain": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the message text with all formatting stripped."
          },
          "embed": {
            "description": "The EmbedOut MsgOut.Embed attached to the message.",
            "$ref": "#/components/schemas/EmbedOut"
          },
          "meeting": {
            "description": "The MeetingOut MsgOut.Meeting attached to the message.",
            "$ref": "#/components/schemas/MeetingOut"
          },
          "annotations": {
            "$ref": "#/components/schemas/PagedListOutOfFileOut"
          },
          "attachments": {
            "$ref": "#/components/schemas/PagedListOutOfFileOut"
          },
          "options": {
            "$ref": "#/components/schemas/PagedListOutOfPollOptionOut"
          },
          "reactions": {
            "description": "Gets reactions to the message.",
            "$ref": "#/components/schemas/PagedListOutOfReactionOut"
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Gets or sets additional metadata."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "is_starred": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the authenticated user has starred the entity."
          },
          "is_subscribed": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the authenticated user has subscribed to the entity."
          },
          "is_trashed": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "created_at": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets the date and time (UTC) the entity was created.",
            "format": "date-time"
          },
          "created_by": {
            "description": "Gets or sets the id of the user that created the entity.",
            "$ref": "#/components/schemas/UserOut"
          },
          "updated_at": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "updated_by": {
            "$ref": "#/components/schemas/UserOut"
          }
        },
        "description": ""
      },
      "MessageUp": {
        "type": "object",
        "properties": {
          "attachments": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of attached files."
          },
          "blobs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of additional blobs to attach."
          },
          "embed_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of embed to attach.",
            "format": "int32"
          },
          "meeting_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of meeting to attach.",
            "format": "int32"
          },
          "options": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PollOptionUp"
            },
            "description": "List of poll options for the item."
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "The message text."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the item."
          }
        },
        "description": "Model for updating messages."
      },
      "NotificationIn": {
        "required": [
          "user",
          "text"
        ],
        "type": "object",
        "properties": {
          "user": {
            "type": [
              "null",
              "string"
            ],
            "description": "User identifier (`id` or `uid`) of notification recipient."
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "The notification text. Numbered placeholders, e.g. \"{0} commented on {1}\", will be replaced with items in `args` when rendering the notification."
          },
          "args": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Arguments used to replace placeholders in `text` when rendering the notification."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          }
        },
        "description": "An object for creating custom notifications."
      },
      "NotificationOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Gets the id of the notification.",
            "format": "int32"
          },
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Notification type, e.g. `activity`, `mention` or `reaction`.",
                "$ref": "#/components/schemas/NotificationType"
              }
            ]
          },
          "action": {
            "type": [
              "null",
              "string"
            ],
            "description": "The type of action that triggered the notification."
          },
          "actor": {
            "description": "The user that performed the action that triggered the notification.",
            "$ref": "#/components/schemas/UserOut"
          },
          "template": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets the notification template string."
          },
          "args": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Gets or sets the arguments used to format string NotificationOut.Template into a (localized) string."
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the formatted (and localized) notification text."
          },
          "html": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the notification text as html."
          },
          "plain": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the notification text as plain text."
          },
          "link": {
            "description": "Gets or sets the entity the notification regards.",
            "$ref": "#/components/schemas/EntityOut"
          },
          "user": {
            "description": "The notification recipient.",
            "$ref": "#/components/schemas/UserOut"
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "created_at": {
            "type": "string",
            "description": "Date and time (UTC) the notification was created.",
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time (UTC) the notification was last modified",
            "format": "date-time"
          },
          "is_unread": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the notification is unread or not."
          }
        },
        "description": "An object representing a notification."
      },
      "NotificationType": {
        "enum": [
          "activity",
          "mention",
          "reaction",
          null
        ],
        "description": "Notification type, e.g. `activity`, `mention` or `reaction`."
      },
      "OutputMode": {
        "enum": [
          "summary",
          "details",
          null
        ]
      },
      "PagedListOutOfAgentOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/AgentOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfAppOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/AppOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfCommentOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/CommentOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfDeliveryOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DeliveryOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfDirectoryOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DirectoryOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfEntityOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/EntityOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfFileOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/FileOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfMemberOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/MemberOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfMessageOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/MessageOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfNotificationOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/NotificationOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfPollOptionOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PollOptionOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfPostOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PostOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfReactionOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ReactionOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfUserOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/UserOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "PagedListOutOfWebhookOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/WebhookOut"
            },
            "description": "Gets the items on the current page."
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the first item on this page (if the data is paged).",
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the number of the last item on this page (if the data is paged).",
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the total number of items in the result.",
            "format": "int64"
          }
        },
        "description": "Represents a collection of objects that can be paged."
      },
      "Permission": {
        "enum": [
          "none",
          "create",
          "read",
          "update",
          "delete",
          "list",
          "admin",
          "manage"
        ],
        "description": "Indicates the permissions a user can have on an entity."
      },
      "PollOptionIn": {
        "required": [
          "text"
        ],
        "type": "object",
        "properties": {
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "The option text."
          }
        },
        "description": "Model for adding poll options."
      },
      "PollOptionOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Gets the option id.",
            "format": "int32"
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets the option text."
          },
          "votes": {
            "description": "A list of users that voted for this option.",
            "$ref": "#/components/schemas/PagedListOutOfUserOut"
          },
          "has_voted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the authenticated user has voted for this option."
          }
        },
        "description": "An individual option in a poll."
      },
      "PollOptionUp": {
        "required": [
          "text"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The option id.",
            "format": "int32"
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "The option text."
          }
        },
        "description": "Model for updating poll options."
      },
      "PostIn": {
        "type": "object",
        "properties": {
          "blobs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of blobs to attach."
          },
          "embed_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of embed to attach.",
            "format": "int32"
          },
          "meeting_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of meeting to attach.",
            "format": "int32"
          },
          "options": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PollOptionIn"
            },
            "description": "List of poll options to attach."
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "The message text."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the item."
          }
        },
        "description": "Model for inserting posts."
      },
      "PostOut": {
        "type": "object",
        "properties": {
          "comments": {
            "$ref": "#/components/schemas/PagedListOutOfCommentOut"
          },
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Gets the id of the entity.",
            "format": "int32"
          },
          "app": {
            "description": "The app where the message is located.",
            "$ref": "#/components/schemas/AppOut"
          },
          "parent": {
            "description": "The parent object of the message (if any).",
            "$ref": "#/components/schemas/EntityOut"
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the message text."
          },
          "html": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the message text as html."
          },
          "plain": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets the message text with all formatting stripped."
          },
          "embed": {
            "description": "The EmbedOut MsgOut.Embed attached to the message.",
            "$ref": "#/components/schemas/EmbedOut"
          },
          "meeting": {
            "description": "The MeetingOut MsgOut.Meeting attached to the message.",
            "$ref": "#/components/schemas/MeetingOut"
          },
          "annotations": {
            "$ref": "#/components/schemas/PagedListOutOfFileOut"
          },
          "attachments": {
            "$ref": "#/components/schemas/PagedListOutOfFileOut"
          },
          "options": {
            "$ref": "#/components/schemas/PagedListOutOfPollOptionOut"
          },
          "reactions": {
            "description": "Gets reactions to the message.",
            "$ref": "#/components/schemas/PagedListOutOfReactionOut"
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Gets or sets additional metadata."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "is_starred": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the authenticated user has starred the entity."
          },
          "is_subscribed": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If the authenticated user has subscribed to the entity."
          },
          "is_trashed": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "created_at": {
            "type": [
              "null",
              "string"
            ],
            "description": "Gets or sets the date and time (UTC) the entity was created.",
            "format": "date-time"
          },
          "created_by": {
            "description": "Gets or sets the id of the user that created the entity.",
            "$ref": "#/components/schemas/UserOut"
          },
          "updated_at": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "updated_by": {
            "$ref": "#/components/schemas/UserOut"
          }
        },
        "description": ""
      },
      "PostUp": {
        "type": "object",
        "properties": {
          "attachments": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of attached files."
          },
          "blobs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Ids of additional blobs to attach."
          },
          "embed_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of embed to attach.",
            "format": "int32"
          },
          "meeting_id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Id of meeting to attach.",
            "format": "int32"
          },
          "options": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PollOptionUp"
            },
            "description": "List of poll options for the item."
          },
          "text": {
            "type": [
              "null",
              "string"
            ],
            "description": "The message text."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the item."
          }
        },
        "description": "Model for updating posts."
      },
      "PresenceStatus": {
        "enum": [
          "away",
          "active",
          null
        ],
        "description": "Gets a value indicating the user's presence."
      },
      "PreviewFormat": {
        "enum": [
          "none",
          "audio",
          "code",
          "embed",
          "html",
          "image",
          "pdf",
          "text",
          "video"
        ],
        "description": ""
      },
      "ProblemDetails": {
        "type": "object"
      },
      "ReactionIn": {
        "required": [
          "content"
        ],
        "type": "object",
        "properties": {
          "content": {
            "type": [
              "null",
              "string"
            ],
            "description": "A single emoji character describing the reaction, e.g. '`👍`' or '`❤️`'."
          }
        },
        "description": ""
      },
      "ReactionOut": {
        "type": "object",
        "properties": {
          "content": {
            "type": [
              "null",
              "string"
            ]
          },
          "created_at": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "created_by": {
            "$ref": "#/components/schemas/UserOut"
          }
        },
        "description": ""
      },
      "TokenIn": {
        "type": "object",
        "properties": {
          "expires_in": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The lifetime of the access token in seconds, defaults to 3600 seconds (1 hour) when not specified.",
            "format": "int32"
          }
        },
        "description": ""
      },
      "TokenOut": {
        "type": "object",
        "properties": {
          "access_token": {
            "type": [
              "null",
              "string"
            ]
          },
          "expires_in": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        },
        "description": ""
      },
      "UserIn": {
        "required": [
          "uid"
        ],
        "type": "object",
        "properties": {
          "uid": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "A unique user identifier (*cannot contain whitespace and must contain at least one non-digit*)."
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The full name in displayable form including all name parts, possibly including titles and suffixes."
          },
          "given_name": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Given/First name(s) of user. In some cultures, people can have multiple given names; all can be present, with the names being separated by space characters."
          },
          "middle_name": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Middle name(s) of the user. In some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters."
          },
          "family_name": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Family/Last name(s) of user. In some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters."
          },
          "nickname": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The nickname, a casual name that may or may not be the same as the string UserUp.GivenName. For instance, a person with given name \"Michael\" might have the nickname \"Mike\"."
          },
          "email": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Email address."
          },
          "phone_number": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The user's preferred phone number."
          },
          "username": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The username for authentication."
          },
          "password": {
            "type": [
              "null",
              "string"
            ],
            "description": "The user's password for authentication."
          },
          "comment": {
            "type": [
              "null",
              "string"
            ],
            "description": "Comment or other application-specific information about the user."
          },
          "picture": {
            "type": [
              "null",
              "string"
            ],
            "description": "The user's profile picture. Can be a public URL, a base64 encoded data URI or a blob id."
          },
          "directories": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Ids or names of user directories."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the user."
          }
        },
        "description": "User insert model."
      },
      "UserOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "given_name": {
            "type": [
              "null",
              "string"
            ]
          },
          "middle_name": {
            "type": [
              "null",
              "string"
            ]
          },
          "family_name": {
            "type": [
              "null",
              "string"
            ]
          },
          "nickname": {
            "type": [
              "null",
              "string"
            ]
          },
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "phone_number": {
            "type": [
              "null",
              "string"
            ]
          },
          "username": {
            "type": [
              "null",
              "string"
            ]
          },
          "avatar_url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Url to profile picture for user."
          },
          "picture": {
            "description": "Gets (blob) meta data for the profile picture.",
            "$ref": "#/components/schemas/BlobOut"
          },
          "directories": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DirectoryOut"
            },
            "description": "User directories."
          },
          "presence": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Gets a value indicating the user's presence.",
                "$ref": "#/components/schemas/PresenceStatus"
              }
            ]
          },
          "comment": {
            "type": [
              "null",
              "string"
            ]
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "created_at": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "is_followed": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Indicates whether the user account is followed by the authenticated user."
          },
          "is_trashed": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Indicates whether the user account is trashed."
          }
        },
        "description": ""
      },
      "UserUp": {
        "type": "object",
        "properties": {
          "uid": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Unique user identifier (*cannot contain whitespace and must contain at least one non-digit*)."
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The full name in displayable form including all name parts, possibly including titles and suffixes."
          },
          "given_name": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Given/First name(s) of user. In some cultures, people can have multiple given names; all can be present, with the names being separated by space characters."
          },
          "middle_name": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Middle name(s) of the user. In some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters."
          },
          "family_name": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Family/Last name(s) of user. In some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters."
          },
          "nickname": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The nickname, a casual name that may or may not be the same as the string UserUp.GivenName. For instance, a person with given name \"Michael\" might have the nickname \"Mike\"."
          },
          "email": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Email address."
          },
          "phone_number": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The user's preferred phone number."
          },
          "username": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The username for authentication."
          },
          "password": {
            "type": [
              "null",
              "string"
            ],
            "description": "The user's password for authentication."
          },
          "comment": {
            "type": [
              "null",
              "string"
            ],
            "description": "Comment or other application-specific information about the user."
          },
          "picture": {
            "type": [
              "null",
              "string"
            ],
            "description": "The user's profile picture. Can be a public URL, a base64 encoded data URI or a blob id."
          },
          "directories": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Ids or names of user directories."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the user."
          }
        },
        "description": "Base model used when inserting/updating users."
      },
      "UserUpsert": {
        "type": "object",
        "properties": {
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique user identifier (*cannot contain whitespace and must contain at least one non-digit*)."
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The full name in displayable form including all name parts, possibly including titles and suffixes."
          },
          "given_name": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Given/First name(s) of user. In some cultures, people can have multiple given names; all can be present, with the names being separated by space characters."
          },
          "middle_name": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Middle name(s) of the user. In some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters."
          },
          "family_name": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Family/Last name(s) of user. In some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters."
          },
          "nickname": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The nickname, a casual name that may or may not be the same as the string UserUp.GivenName. For instance, a person with given name \"Michael\" might have the nickname \"Mike\"."
          },
          "email": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "Email address."
          },
          "phone_number": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The user's preferred phone number."
          },
          "username": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The username for authentication."
          },
          "password": {
            "type": [
              "null",
              "string"
            ],
            "description": "The user's password for authentication."
          },
          "comment": {
            "type": [
              "null",
              "string"
            ],
            "description": "Comment or other application-specific information about the user."
          },
          "picture": {
            "type": [
              "null",
              "string"
            ],
            "description": "The user's profile picture. Can be a public URL, a base64 encoded data URI or a blob id."
          },
          "directories": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Ids or names of user directories."
          },
          "metadata": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional metadata properties, e.g. `{ \"color\": \"blue\", \"size\": \"XL\" }`."
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of tags to associate with the user."
          }
        },
        "description": ""
      },
      "WebhookIn": {
        "required": [
          "payload_url",
          "triggers"
        ],
        "type": "object",
        "properties": {
          "payload_url": {
            "maxLength": 2048,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The URL to which the payloads will be delivered."
          },
          "secret": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "If provided, the secret will be used as the key to generate the HMAC hex digest value for delivery signature headers."
          },
          "triggers": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of event groups that will trigger this webhook."
          },
          "enabled": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether the webhook is enabled (if notifications are sent when the webhook is triggered)."
          }
        },
        "description": ""
      },
      "WebhookOut": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "The unique identifier of the hook.",
            "format": "int32"
          },
          "payload_url": {
            "type": [
              "null",
              "string"
            ],
            "description": "The URL to which the payloads will be delivered."
          },
          "triggers": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "The list of events that will trigger this Webhook."
          },
          "is_enabled": {
            "type": "boolean",
            "description": "Gets or sets a value indicating wheter the webhook is enabled (if notifications are sent when the webhook is triggered)."
          }
        },
        "description": ""
      },
      "WebhookUp": {
        "type": "object",
        "properties": {
          "payload_url": {
            "maxLength": 2048,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The URL to which the payloads will be delivered."
          },
          "secret": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "If provided, the secret will be used as the key to generate the HMAC hex digest value for delivery signature headers."
          },
          "triggers": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A list of event groups that will trigger this webhook."
          },
          "is_enabled": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Indicates if the webhook is enabled (if notifications are sent when the webhook is triggered)."
          }
        },
        "description": ""
      }
    }
  },
  "tags": [
    {
      "name": "Agents",
      "description": "The Agents API has methods for managing AI agents and chat bots."
    },
    {
      "name": "Apps",
      "description": "The Apps API has methods for creating, and managing apps.\r\nEach app has a `type` which controls its functionality. In API responses, app types are always identified with their `guid`,\r\nbut in requests (for instance when creating apps) you can also specify their type `name`.\r\n\r\n| `name`         | `guid`                                 |\r\n| -------------- | -------------------------------------- |\r\n| `agent_chat`   | `2352a1c6-abc6-420e-8b85-ca7d5aed8779` |\r\n| `chat`         | `d65dd4bc-418e-403c-9f56-f9cf4da931ed` |\r\n| `chat_room`    | `edb400ac-839b-45a7-b2a8-6a01820d1c44` |\r\n| `comments`     | `88f96a08-c6c1-4eac-a0bd-5bf8fba1a3fd` |\r\n| `files`        | `523edd88-4bbf-4547-b60f-2859a6d2ddc1` |\r\n| `posts`        | `5ebfa152-de85-48da-82dd-30a1b560c313` |\r\n| `private_chat` | `7e14f418-8f15-46f4-b182-f619b671e470` |"
    },
    {
      "name": "Blobs",
      "description": "The Blobs API enables the uploading of blobs. Blobs are used as references when creating files and attachments."
    },
    {
      "name": "Comments",
      "description": "The Comments API supports managing comments."
    },
    {
      "name": "Directories",
      "description": "The Directories API has endpoints for managing user directories."
    },
    {
      "name": "Embeds",
      "description": "The Embeds API converts URLs into embedded videos, images and rich article previews."
    },
    {
      "name": "Files",
      "description": "The Files API has methods for managing files."
    },
    {
      "name": "Meetings",
      "description": "The Meetings API enables you to create meetings (which can later be attached to messages)."
    },
    {
      "name": "Messages",
      "description": "The Messages API supports managing chat messages."
    },
    {
      "name": "Notifications",
      "description": "The Notifications API has methods for subscribing to updates and managing notifications."
    },
    {
      "name": "Options",
      "description": "The Options API supports managing poll options."
    },
    {
      "name": "Posts",
      "description": "The Posts API supports managing posts."
    },
    {
      "name": "Reactions",
      "description": "The Reactions API enables you to create, list and delete reactions."
    },
    {
      "name": "Stars",
      "description": "The Stars API enables bookmarking things for reference and/or follow-up."
    },
    {
      "name": "Users",
      "description": "The Users API has methods for managing users."
    },
    {
      "name": "Webhooks",
      "description": "The Webhooks API enable you to register and manage webhooks.\r\nYou can also use the API to list webhook deliveries for a webhook."
    }
  ]
}