diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index a0f96ed6d..ef4d7d017 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -103,7 +103,7 @@ const config = { { specs: [ { - spec: "openapi/jan.json", // can be local file, url, or parsed json object + spec: "openapi/jan.yaml", // can be local file, url, or parsed json object route: "/api-reference", // path where to render docs }, ], diff --git a/docs/openapi/jan.json b/docs/openapi/jan.json deleted file mode 100644 index 0cc3d8603..000000000 --- a/docs/openapi/jan.json +++ /dev/null @@ -1,673 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "description": "This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.", - "version": "1.0.6", - "title": "Swagger Petstore", - "termsOfService": "http://swagger.io/terms/", - "contact": { "email": "apiteam@swagger.io" }, - "license": { - "name": "Apache 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0.html" - } - }, - "host": "petstore.swagger.io", - "basePath": "/v2", - "tags": [ - { - "name": "pet", - "description": "Everything about your Pets", - "externalDocs": { - "description": "Find out more", - "url": "http://swagger.io" - } - }, - { "name": "store", "description": "Access to Petstore orders" }, - { - "name": "user", - "description": "Operations about user", - "externalDocs": { - "description": "Find out more about our store", - "url": "http://swagger.io" - } - } - ], - "schemes": ["https", "http"], - "paths": { - "/pet/{petId}/uploadImage": { - "post": { - "tags": ["pet"], - "summary": "uploads an image", - "description": "", - "operationId": "uploadFile", - "consumes": ["multipart/form-data"], - "produces": ["application/json"], - "parameters": [ - { - "name": "petId", - "in": "path", - "description": "ID of pet to update", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "additionalMetadata", - "in": "formData", - "description": "Additional data to pass to server", - "required": false, - "type": "string" - }, - { - "name": "file", - "in": "formData", - "description": "file to upload", - "required": false, - "type": "file" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { "$ref": "#/definitions/ApiResponse" } - } - }, - "security": [{ "petstore_auth": ["write:pets", "read:pets"] }] - } - }, - "/pet": { - "post": { - "tags": ["pet"], - "summary": "Add a new pet to the store", - "description": "", - "operationId": "addPet", - "consumes": ["application/json", "application/xml"], - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "Pet object that needs to be added to the store", - "required": true, - "schema": { "$ref": "#/definitions/Pet" } - } - ], - "responses": { "405": { "description": "Invalid input" } }, - "security": [{ "petstore_auth": ["write:pets", "read:pets"] }] - }, - "put": { - "tags": ["pet"], - "summary": "Update an existing pet", - "description": "", - "operationId": "updatePet", - "consumes": ["application/json", "application/xml"], - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "Pet object that needs to be added to the store", - "required": true, - "schema": { "$ref": "#/definitions/Pet" } - } - ], - "responses": { - "400": { "description": "Invalid ID supplied" }, - "404": { "description": "Pet not found" }, - "405": { "description": "Validation exception" } - }, - "security": [{ "petstore_auth": ["write:pets", "read:pets"] }] - } - }, - "/pet/findByStatus": { - "get": { - "tags": ["pet"], - "summary": "Finds Pets by status", - "description": "Multiple status values can be provided with comma separated strings", - "operationId": "findPetsByStatus", - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "name": "status", - "in": "query", - "description": "Status values that need to be considered for filter", - "required": true, - "type": "array", - "items": { - "type": "string", - "enum": ["available", "pending", "sold"], - "default": "available" - }, - "collectionFormat": "multi" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "type": "array", - "items": { "$ref": "#/definitions/Pet" } - } - }, - "400": { "description": "Invalid status value" } - }, - "security": [{ "petstore_auth": ["write:pets", "read:pets"] }] - } - }, - "/pet/findByTags": { - "get": { - "tags": ["pet"], - "summary": "Finds Pets by tags", - "description": "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", - "operationId": "findPetsByTags", - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "name": "tags", - "in": "query", - "description": "Tags to filter by", - "required": true, - "type": "array", - "items": { "type": "string" }, - "collectionFormat": "multi" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "type": "array", - "items": { "$ref": "#/definitions/Pet" } - } - }, - "400": { "description": "Invalid tag value" } - }, - "security": [{ "petstore_auth": ["write:pets", "read:pets"] }], - "deprecated": true - } - }, - "/pet/{petId}": { - "get": { - "tags": ["pet"], - "summary": "Find pet by ID", - "description": "Returns a single pet", - "operationId": "getPetById", - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "name": "petId", - "in": "path", - "description": "ID of pet to return", - "required": true, - "type": "integer", - "format": "int64" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { "$ref": "#/definitions/Pet" } - }, - "400": { "description": "Invalid ID supplied" }, - "404": { "description": "Pet not found" } - }, - "security": [{ "api_key": [] }] - }, - "post": { - "tags": ["pet"], - "summary": "Updates a pet in the store with form data", - "description": "", - "operationId": "updatePetWithForm", - "consumes": ["application/x-www-form-urlencoded"], - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "name": "petId", - "in": "path", - "description": "ID of pet that needs to be updated", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "name", - "in": "formData", - "description": "Updated name of the pet", - "required": false, - "type": "string" - }, - { - "name": "status", - "in": "formData", - "description": "Updated status of the pet", - "required": false, - "type": "string" - } - ], - "responses": { "405": { "description": "Invalid input" } }, - "security": [{ "petstore_auth": ["write:pets", "read:pets"] }] - }, - "delete": { - "tags": ["pet"], - "summary": "Deletes a pet", - "description": "", - "operationId": "deletePet", - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "name": "api_key", - "in": "header", - "required": false, - "type": "string" - }, - { - "name": "petId", - "in": "path", - "description": "Pet id to delete", - "required": true, - "type": "integer", - "format": "int64" - } - ], - "responses": { - "400": { "description": "Invalid ID supplied" }, - "404": { "description": "Pet not found" } - }, - "security": [{ "petstore_auth": ["write:pets", "read:pets"] }] - } - }, - "/store/order": { - "post": { - "tags": ["store"], - "summary": "Place an order for a pet", - "description": "", - "operationId": "placeOrder", - "consumes": ["application/json"], - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "order placed for purchasing the pet", - "required": true, - "schema": { "$ref": "#/definitions/Order" } - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { "$ref": "#/definitions/Order" } - }, - "400": { "description": "Invalid Order" } - } - } - }, - "/store/order/{orderId}": { - "get": { - "tags": ["store"], - "summary": "Find purchase order by ID", - "description": "For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions", - "operationId": "getOrderById", - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "name": "orderId", - "in": "path", - "description": "ID of pet that needs to be fetched", - "required": true, - "type": "integer", - "maximum": 10, - "minimum": 1, - "format": "int64" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { "$ref": "#/definitions/Order" } - }, - "400": { "description": "Invalid ID supplied" }, - "404": { "description": "Order not found" } - } - }, - "delete": { - "tags": ["store"], - "summary": "Delete purchase order by ID", - "description": "For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors", - "operationId": "deleteOrder", - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "name": "orderId", - "in": "path", - "description": "ID of the order that needs to be deleted", - "required": true, - "type": "integer", - "minimum": 1, - "format": "int64" - } - ], - "responses": { - "400": { "description": "Invalid ID supplied" }, - "404": { "description": "Order not found" } - } - } - }, - "/store/inventory": { - "get": { - "tags": ["store"], - "summary": "Returns pet inventories by status", - "description": "Returns a map of status codes to quantities", - "operationId": "getInventory", - "produces": ["application/json"], - "parameters": [], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "type": "object", - "additionalProperties": { "type": "integer", "format": "int32" } - } - } - }, - "security": [{ "api_key": [] }] - } - }, - "/user/createWithArray": { - "post": { - "tags": ["user"], - "summary": "Creates list of users with given input array", - "description": "", - "operationId": "createUsersWithArrayInput", - "consumes": ["application/json"], - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "List of user object", - "required": true, - "schema": { - "type": "array", - "items": { "$ref": "#/definitions/User" } - } - } - ], - "responses": { "default": { "description": "successful operation" } } - } - }, - "/user/createWithList": { - "post": { - "tags": ["user"], - "summary": "Creates list of users with given input array", - "description": "", - "operationId": "createUsersWithListInput", - "consumes": ["application/json"], - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "List of user object", - "required": true, - "schema": { - "type": "array", - "items": { "$ref": "#/definitions/User" } - } - } - ], - "responses": { "default": { "description": "successful operation" } } - } - }, - "/user/{username}": { - "get": { - "tags": ["user"], - "summary": "Get user by user name", - "description": "", - "operationId": "getUserByName", - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "name": "username", - "in": "path", - "description": "The name that needs to be fetched. Use user1 for testing. ", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { "$ref": "#/definitions/User" } - }, - "400": { "description": "Invalid username supplied" }, - "404": { "description": "User not found" } - } - }, - "put": { - "tags": ["user"], - "summary": "Updated user", - "description": "This can only be done by the logged in user.", - "operationId": "updateUser", - "consumes": ["application/json"], - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "name": "username", - "in": "path", - "description": "name that need to be updated", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "description": "Updated user object", - "required": true, - "schema": { "$ref": "#/definitions/User" } - } - ], - "responses": { - "400": { "description": "Invalid user supplied" }, - "404": { "description": "User not found" } - } - }, - "delete": { - "tags": ["user"], - "summary": "Delete user", - "description": "This can only be done by the logged in user.", - "operationId": "deleteUser", - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "name": "username", - "in": "path", - "description": "The name that needs to be deleted", - "required": true, - "type": "string" - } - ], - "responses": { - "400": { "description": "Invalid username supplied" }, - "404": { "description": "User not found" } - } - } - }, - "/user/login": { - "get": { - "tags": ["user"], - "summary": "Logs user into the system", - "description": "", - "operationId": "loginUser", - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "name": "username", - "in": "query", - "description": "The user name for login", - "required": true, - "type": "string" - }, - { - "name": "password", - "in": "query", - "description": "The password for login in clear text", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "successful operation", - "headers": { - "X-Expires-After": { - "type": "string", - "format": "date-time", - "description": "date in UTC when token expires" - }, - "X-Rate-Limit": { - "type": "integer", - "format": "int32", - "description": "calls per hour allowed by the user" - } - }, - "schema": { "type": "string" } - }, - "400": { "description": "Invalid username/password supplied" } - } - } - }, - "/user/logout": { - "get": { - "tags": ["user"], - "summary": "Logs out current logged in user session", - "description": "", - "operationId": "logoutUser", - "produces": ["application/json", "application/xml"], - "parameters": [], - "responses": { "default": { "description": "successful operation" } } - } - }, - "/user": { - "post": { - "tags": ["user"], - "summary": "Create user", - "description": "This can only be done by the logged in user.", - "operationId": "createUser", - "consumes": ["application/json"], - "produces": ["application/json", "application/xml"], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "Created user object", - "required": true, - "schema": { "$ref": "#/definitions/User" } - } - ], - "responses": { "default": { "description": "successful operation" } } - } - } - }, - "securityDefinitions": { - "api_key": { "type": "apiKey", "name": "api_key", "in": "header" }, - "petstore_auth": { - "type": "oauth2", - "authorizationUrl": "https://petstore.swagger.io/oauth/authorize", - "flow": "implicit", - "scopes": { - "read:pets": "read your pets", - "write:pets": "modify pets in your account" - } - } - }, - "definitions": { - "ApiResponse": { - "type": "object", - "properties": { - "code": { "type": "integer", "format": "int32" }, - "type": { "type": "string" }, - "message": { "type": "string" } - } - }, - "Category": { - "type": "object", - "properties": { - "id": { "type": "integer", "format": "int64" }, - "name": { "type": "string" } - }, - "xml": { "name": "Category" } - }, - "Pet": { - "type": "object", - "required": ["name", "photoUrls"], - "properties": { - "id": { "type": "integer", "format": "int64" }, - "category": { "$ref": "#/definitions/Category" }, - "name": { "type": "string", "example": "doggie" }, - "photoUrls": { - "type": "array", - "xml": { "wrapped": true }, - "items": { "type": "string", "xml": { "name": "photoUrl" } } - }, - "tags": { - "type": "array", - "xml": { "wrapped": true }, - "items": { "xml": { "name": "tag" }, "$ref": "#/definitions/Tag" } - }, - "status": { - "type": "string", - "description": "pet status in the store", - "enum": ["available", "pending", "sold"] - } - }, - "xml": { "name": "Pet" } - }, - "Tag": { - "type": "object", - "properties": { - "id": { "type": "integer", "format": "int64" }, - "name": { "type": "string" } - }, - "xml": { "name": "Tag" } - }, - "Order": { - "type": "object", - "properties": { - "id": { "type": "integer", "format": "int64" }, - "petId": { "type": "integer", "format": "int64" }, - "quantity": { "type": "integer", "format": "int32" }, - "shipDate": { "type": "string", "format": "date-time" }, - "status": { - "type": "string", - "description": "Order Status", - "enum": ["placed", "approved", "delivered"] - }, - "complete": { "type": "boolean" } - }, - "xml": { "name": "Order" } - }, - "User": { - "type": "object", - "properties": { - "id": { "type": "integer", "format": "int64" }, - "username": { "type": "string" }, - "firstName": { "type": "string" }, - "lastName": { "type": "string" }, - "email": { "type": "string" }, - "password": { "type": "string" }, - "phone": { "type": "string" }, - "userStatus": { - "type": "integer", - "format": "int32", - "description": "User Status" - } - }, - "xml": { "name": "User" } - } - }, - "externalDocs": { - "description": "Find out more about Swagger", - "url": "http://swagger.io" - } -} \ No newline at end of file diff --git a/docs/openapi/jan.yaml b/docs/openapi/jan.yaml new file mode 100644 index 000000000..734537258 --- /dev/null +++ b/docs/openapi/jan.yaml @@ -0,0 +1,190 @@ +openapi: 3.0.0 +info: + title: Jan API Reference + description: Please see https://jan.ai for documentation. +version: "0.1.8" +contact: + name: Jan Discord + url: https://discord.gg/7EcEz7MrvA +license: + name: AGPLv3 + url: https://github.com/janhq/nitro/blob/main/LICENSE +servers: + - url: https://localhost:1337/v1/ +tags: + - name: Models + description: List and describe the various models available in the API. + - name: Chat Completion + description: Given a list of messages comprising a conversation, the model will return a response. + - name: Messages + description: Operations for individual messages, including creation, retrieval, and modification + - name: Threads + description: Manages series of related messages or conversation threads + - name: Assistants + description: Configures and utilizes different AI assistants for varied tasks +x-tagGroups: + - name: Endpoints + tags: + - Models + - Chat Completion + - name: Chat + tags: + - Assistants + - Messages + - Threads +paths: + /models: + get: + operationId: listModels + tags: + - Models + summary: List Models + description: Lists the currently available models, and provides basic information about each one such as the owner and availability. + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "specs/models/models.yaml#/components/schemas/ListModelsResponse" + x-codeSamples: + - lang: "curl" + source: | + curl https://localhost:1337/v1/models + post: + operationId: downloadModel + tags: + - Models + summary: Download Model + description: Download a model. + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "specs/models/models.yaml#/components/schemas/DownloadModelResponse" + x-codeSamples: + - lang: "curl" + source: | + curl -X POST https://localhost:1337/v1/models + /models/{model_id}: + get: + operationId: getModel + tags: + - Models + summary: Get Model + description: Get a model instance, providing basic information about the model such as the owner and permissioning. + parameters: + - in: path + name: source_url + required: true + schema: + type: string + # ideally this will be an actual ID, so this will always work from browser + example: https://huggingface.com/thebloke/example.gguf + description: The ID of the model to use for this request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "specs/models/models.yaml#/components/schemas/GetModelResponse" + x-codeSamples: + - lang: "curl" + source: | + curl https://localhost:1337/v1/models/zephyr-7b + delete: + operationId: deleteModel + tags: + - Models + summary: Delete Model + description: Delete a model. + parameters: + - in: path + name: model + required: true + schema: + type: string + example: zephyr-7b + description: The model to delete + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "specs/models/models.yaml#/components/schemas/DeleteModelResponse" + x-codeSamples: + - lang: "curl" + source: | + curl -X DELETE https://localhost:1337/v1/models/zephyr-7b + /models/{model_id}/start: + put: + operationId: startModel + tags: + - Models + summary: Start Model + description: Starts an imported model. Loads the model into V/RAM. + parameters: + - in: path + name: model + required: true + schema: + type: string + # ideally this will be an actual ID, so this will always work from browser + example: zephyr-7b + description: The ID of the model to use for this request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "specs/models/models.yaml#/components/schemas/StartModelResponse" + x-codeSamples: + - lang: "curl" + source: | + curl -X PUT https://localhost:1337/v1/models/zephyr-7b/start + /models/{model_id}/stop: + put: + operationId: stopModel + tags: + - Models + summary: Stop Model + description: Stop an imported model. + parameters: + - in: path + name: model + required: true + schema: + type: string + # ideally this will be an actual ID, so this will always work from browser + example: zephyr-7b + description: The ID of the model to use for this request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "specs/models/models.yaml#/components/schemas/StopModelResponse" + x-codeSamples: + - lang: "curl" + source: | + curl -X PUT https://localhost:1337/v1/models/zephyr-7b/stop + +x-webhooks: + ModelObject: + post: + summary: The model object + description: Information about a model in the systems + operationId: ModelObject + tags: + - Models + requestBody: + content: + application/json: + schema: + $ref: 'specs/models/models.yaml#/components/schemas/ModelObject' diff --git a/docs/openapi/specs/models/models.yaml b/docs/openapi/specs/models/models.yaml new file mode 100644 index 000000000..da07eed4d --- /dev/null +++ b/docs/openapi/specs/models/models.yaml @@ -0,0 +1,329 @@ +components: + schemas: + ListModelsResponse: + type: object + properties: + object: + type: string + enum: [list] + data: + type: array + items: + $ref: "#/components/schemas/Model" + required: + - object + - data + + Model: + type: object + properties: + type: + type: string + default: "model" + description: "The type of the object." + version: + type: string + default: "1" + description: "The version number of the model." + id: + type: string + description: "Unique identifier used in chat-completions model_name, matches folder name." + example: "zephyr-7b" + name: + type: string + description: "Name of the model." + example: "Zephyr 7B" + owned_by: + type: string + description: "Compatibility field for OpenAI." + default: "" + created: + type: integer + format: int64 + description: "Unix timestamp representing the creation time." + description: + type: string + description: "Description of the model." + state: + type: string + enum: [null, "downloading", "available"] + description: "Current state of the model." + format: + type: string + description: "State format of the model, distinct from the engine." + example: "ggufv3" + source_url: + type: string + format: uri + description: "URL to the source of the model." + example: "https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/blob/main/zephyr-7b-beta.Q4_K_M.gguf" + settings: + type: object + properties: + ctx_len: + type: string + description: "Context length." + example: "2048" + ngl: + type: string + description: "Number of layers." + example: "100" + embedding: + type: string + description: "Indicates if embedding is enabled." + example: "true" + n_parallel: + type: string + description: "Number of parallel processes." + example: "4" + additionalProperties: false + parameters: + type: object + properties: + temperature: + type: string + description: "Temperature setting for the model." + example: "0.7" + token_limit: + type: string + description: "Token limit for the model." + example: "2048" + top_k: + type: string + description: "Top-k setting for the model." + example: "0" + top_p: + type: string + description: "Top-p setting for the model." + example: "1" + stream: + type: string + description: "Indicates if streaming is enabled." + example: "true" + additionalProperties: false + metadata: + type: object + description: "Additional metadata." + assets: + type: array + items: + type: string + description: "List of assets related to the model." + required: + - type + - version + - id + - name + - created + - state + - format + - source_url + - settings + - parameters + + ModelObject: + type: object + properties: + id: + type: string + description: "The identifier of the model." + example: "zephyr-7b" + object: + type: string + description: "The type of the object, indicating it's a model." + default: "model" + created: + type: integer + format: int64 + description: "Unix timestamp representing the creation time of the model." + example: "1253935178" + owned_by: + type: string + description: "The entity that owns the model." + example: "_" + required: + - id + - object + - created + - owned_by + + GetModelResponse: + type: object + properties: + id: + type: string + description: "The identifier of the model." + example: "zephyr-7b" + object: + type: string + description: "Type of the object, indicating it's a model." + default: "model" + created: + type: integer + format: int64 + description: "Unix timestamp representing the creation time of the model." + owned_by: + type: string + description: "The entity that owns the model." + example: "_" + state: + type: string + enum: [not_downloaded, downloaded, running, stopped] + description: "The current state of the model." + source_url: + type: string + format: uri + description: "URL to the source of the model." + example: "https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/blob/main/zephyr-7b-beta.Q4_K_M.gguf" + parameters: + type: object + properties: + ctx_len: + type: integer + description: "Context length." + example: 2048 + ngl: + type: integer + description: "Number of layers." + example: 100 + embedding: + type: boolean + description: "Indicates if embedding is enabled." + example: true + n_parallel: + type: integer + description: "Number of parallel processes." + example: 4 + # pre_prompt: + # type: string + # description: "Predefined prompt for initiating the chat." + # example: "A chat between a curious user and an artificial intelligence" + # user_prompt: + # type: string + # description: "Format of user's prompt." + # example: "USER: " + # ai_prompt: + # type: string + # description: "Format of AI's response." + # example: "ASSISTANT: " + temperature: + type: string + description: "Temperature setting for the model." + example: "0.7" + token_limit: + type: string + description: "Token limit for the model." + example: "2048" + top_k: + type: string + description: "Top-k setting for the model." + example: "0" + top_p: + type: string + description: "Top-p setting for the model." + example: "1" + metadata: + type: object + properties: + engine: + type: string + description: "The engine used by the model." + example: "llamacpp" + quantization: + type: string + description: "Quantization parameter of the model." + example: "Q3_K_L" + size: + type: string + description: "Size of the model." + example: "7B" + required: + - id + - object + - created + - owned_by + - state + - source_url + - parameters + - metadata + + DeleteModelResponse: + type: object + properties: + id: + type: string + description: "The identifier of the model that was deleted." + example: "model-zephyr-7B" + object: + type: string + description: "Type of the object, indicating it's a model." + default: "model" + deleted: + type: boolean + description: "Indicates whether the model was successfully deleted." + example: true + required: + - id + - object + - deleted + + StartModelResponse: + type: object + properties: + id: + type: string + description: "The identifier of the model that was started." + example: "model-zephyr-7B" + object: + type: string + description: "Type of the object, indicating it's a model." + default: "model" + state: + type: string + description: "The current state of the model after the start operation." + example: "running" + required: + - id + - object + - state + + StopModelResponse: + type: object + properties: + id: + type: string + description: "The identifier of the model that was started." + example: "model-zephyr-7B" + object: + type: string + description: "Type of the object, indicating it's a model." + default: "model" + state: + type: string + description: "The current state of the model after the start operation." + example: "stopped" + required: + - id + - object + - state + + DownloadModelResponse: + type: object + properties: + id: + type: string + description: "The identifier of the model that was started." + example: "model-zephyr-7B" + object: + type: string + description: "Type of the object, indicating it's a model." + default: "model" + state: + type: string + description: "The current state of the model after the start operation." + example: "downloaded" + required: + - id + - object + - state + diff --git a/docs/openapi/janapi.yaml b/docs/openapi/specs/threads/threads.yaml similarity index 100% rename from docs/openapi/janapi.yaml rename to docs/openapi/specs/threads/threads.yaml