tabby/website/static/openapi.json

237 lines
5.5 KiB
JSON

{
"openapi": "3.0.3",
"info": {
"title": "Tabby Server",
"description": "\n[![tabby stars](https://img.shields.io/github/stars/TabbyML/tabby?style=social)](https://github.com/TabbyML/tabby)\n\nOpenAPI documentation for [tabby](https://github.com/TabbyML/tabby), a self-hosted AI coding assistant.",
"license": {
"name": "Apache 2.0",
"url": "https://github.com/TabbyML/tabby/blob/main/LICENSE"
},
"version": "0.1.0"
},
"servers": [
{
"url": "https://playground.app.tabbyml.com/tabby",
"description": "Playground server"
},
{
"url": "http://localhost:8080",
"description": "Local 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": {
"post": {
"tags": [
"v1"
],
"operationId": "health",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HealthState"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"Choice": {
"type": "object",
"required": [
"index",
"text"
],
"properties": {
"index": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"text": {
"type": "string"
}
}
},
"CompletionRequest": {
"type": "object",
"properties": {
"prompt": {
"type": "string",
"example": "def fib(n):",
"nullable": true
},
"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",
"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"
}
}
}
},
"HealthState": {
"type": "object",
"required": [
"model",
"device",
"compute_type"
],
"properties": {
"model": {
"type": "string"
},
"device": {
"type": "string"
},
"compute_type": {
"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
}
}
},
"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
}
}
}
}
}
}