tabby/clients/tabby-agent/openapi/tabby.json

231 lines
9.2 KiB
JSON
Raw Normal View History

{
"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" }
}
}
}
}
}