{ "openapi": "3.0.3", "info": { "title": "Tabby Server", "description": "\n[![tabby stars](https://img.shields.io/github/stars/TabbyML/tabby)](https://github.com/TabbyML/tabby)\n[![Join Slack](https://shields.io/badge/Join-Tabby%20Slack-red?logo=slack)](https://join.slack.com/t/tabbycommunity/shared_invite/zt-1xeiddizp-bciR2RtFTaJ37RBxr8VxpA)\n\nInstall following IDE / Editor extensions to get started with [Tabby](https://github.com/TabbyML/tabby).\n* [VSCode Extension](https://github.com/TabbyML/tabby/tree/main/clients/vscode) – Install from the [marketplace](https://marketplace.visualstudio.com/items?itemName=TabbyML.vscode-tabby), or [open-vsx.org](https://open-vsx.org/extension/TabbyML/vscode-tabby)\n* [VIM Extension](https://github.com/TabbyML/tabby/tree/main/clients/vim)\n* [IntelliJ Platform Plugin](https://github.com/TabbyML/tabby/tree/main/clients/intellij) – Install from the [marketplace](https://plugins.jetbrains.com/plugin/22379-tabby)\n", "license": { "name": "Apache 2.0", "url": "https://github.com/TabbyML/tabby/blob/main/LICENSE" }, "version": "0.5.5" }, "servers": [{ "url": "/", "description": "Server" }], "paths": { "/v1/completions": { "post": { "tags": ["v1"], "operationId": "completion", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CompletionRequest" } } }, "required": true }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CompletionResponse" } } } }, "400": { "description": "Bad Request" } } } }, "/v1/events": { "post": { "tags": ["v1"], "operationId": "event", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LogEventRequest" } } }, "required": true }, "responses": { "200": { "description": "Success" }, "400": { "description": "Bad Request" } } } }, "/v1/health": { "get": { "tags": ["v1"], "operationId": "health", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthState" } } } } } } }, "/v1beta/search": { "get": { "tags": ["v1beta"], "operationId": "search", "parameters": [ { "name": "q", "in": "query", "required": true, "schema": { "type": "string", "default": "get" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 20, "nullable": true, "minimum": 0.0 } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0, "nullable": true, "minimum": 0.0 } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SearchResponse" } } } }, "501": { "description": "When code search is not enabled, the endpoint will returns 501 Not Implemented" } } } } }, "components": { "schemas": { "Choice": { "type": "object", "required": ["index", "text"], "properties": { "index": { "type": "integer", "format": "int32", "minimum": 0.0 }, "text": { "type": "string" } } }, "CompletionRequest": { "type": "object", "properties": { "language": { "type": "string", "description": "Language identifier, full list is maintained at\nhttps://code.visualstudio.com/docs/languages/identifiers", "example": "python", "nullable": true }, "segments": { "allOf": [{ "$ref": "#/components/schemas/Segments" }], "nullable": true }, "user": { "type": "string", "description": "A unique identifier representing your end-user, which can help Tabby to monitor & generating\nreports.", "nullable": true }, "debug_options": { "allOf": [{ "$ref": "#/components/schemas/DebugOptions" }], "nullable": true } }, "example": { "language": "python", "segments": { "prefix": "def fib(n):\n ", "suffix": "\n return fib(n - 1) + fib(n - 2)" } } }, "CompletionResponse": { "type": "object", "required": ["id", "choices"], "properties": { "id": { "type": "string" }, "choices": { "type": "array", "items": { "$ref": "#/components/schemas/Choice" } }, "debug_data": { "allOf": [{ "$ref": "#/components/schemas/DebugData" }], "nullable": true } }, "example": { "choices": [{ "index": 0, "text": "string" }], "id": "string" } }, "DebugData": { "type": "object", "properties": { "snippets": { "type": "array", "items": { "$ref": "#/components/schemas/Snippet" }, "nullable": true }, "prompt": { "type": "string", "nullable": true } } }, "DebugOptions": { "type": "object", "properties": { "raw_prompt": { "type": "string", "description": "When `raw_prompt` is specified, it will be passed directly to the inference engine for completion. `segments` field in `CompletionRequest` will be ignored.\n\nThis is useful for certain requests that aim to test the tabby's e2e quality.", "nullable": true }, "return_snippets": { "type": "boolean", "description": "When true, returns `snippets` in `debug_data`." }, "return_prompt": { "type": "boolean", "description": "When true, returns `prompt` in `debug_data`." }, "disable_retrieval_augmented_code_completion": { "type": "boolean", "description": "When true, disable retrieval augmented code completion." } } }, "HealthState": { "type": "object", "required": ["model", "device", "arch", "cpu_info", "cpu_count", "cuda_devices", "version"], "properties": { "model": { "type": "string" }, "chat_model": { "type": "string", "nullable": true }, "device": { "type": "string" }, "arch": { "type": "string" }, "cpu_info": { "type": "string" }, "cpu_count": { "type": "integer", "minimum": 0.0 }, "cuda_devices": { "type": "array", "items": { "type": "string" } }, "version": { "$ref": "#/components/schemas/Version" } } }, "Hit": { "type": "object", "required": ["score", "doc", "id"], "properties": { "score": { "type": "number", "format": "float" }, "doc": { "$ref": "#/components/schemas/HitDocument" }, "id": { "type": "integer", "format": "int32", "minimum": 0.0 } } }, "HitDocument": { "type": "object", "required": ["body", "filepath", "git_url", "kind", "language", "name"], "properties": { "body": { "type": "string" }, "filepath": { "type": "string" }, "git_url": { "type": "string" }, "kind": { "type": "string" }, "language": { "type": "string" }, "name": { "type": "string" } } }, "LogEventRequest": { "type": "object", "required": ["type", "completion_id", "choice_index"], "properties": { "type": { "type": "string", "description": "Event type, should be `view` or `select`.", "example": "view" }, "completion_id": { "type": "string" }, "choice_index": { "type": "integer", "format": "int32", "minimum": 0.0 } } }, "SearchResponse": { "type": "object", "required": ["num_hits", "hits"], "properties": { "num_hits": { "type": "integer", "minimum": 0.0 }, "hits": { "type": "array", "items": { "$ref": "#/components/schemas/Hit" } } } }, "Segments": { "type": "object", "required": ["prefix"], "properties": { "prefix": { "type": "string", "description": "Content that appears before the cursor in the editor window." }, "suffix": { "type": "string", "description": "Content that appears after the cursor in the editor window.", "nullable": true } } }, "Snippet": { "type": "object", "required": ["filepath", "body", "score"], "properties": { "filepath": { "type": "string" }, "body": { "type": "string" }, "score": { "type": "number", "format": "float" } } }, "Version": { "type": "object", "required": ["build_date", "build_timestamp", "git_sha", "git_describe"], "properties": { "build_date": { "type": "string" }, "build_timestamp": { "type": "string" }, "git_sha": { "type": "string" }, "git_describe": { "type": "string" } } } } } }