231 lines
9.2 KiB
JSON
231 lines
9.2 KiB
JSON
{
|
||
"openapi": "3.0.3",
|
||
"info": {
|
||
"title": "Tabby Server",
|
||
"description": "\n[](https://github.com/TabbyML/tabby)\n[](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" }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|