@ -1,9 +1,25 @@
Currently, the application provides the following main API endpoints:
# API Endpoints Documentation
### /api/answer
It's a POST request that sends a JSON in body with 4 values. It will receive an answer for a user provided question.
Here is a JavaScript fetch example:
*Currently, the application provides the following main API endpoints:*
### 1. /api/answer
**Description:**
This endpoint is used to request answers to user-provided questions.
**Request:**
Method: POST
Headers: Content-Type should be set to "application/json; charset=utf-8"
Request Body: JSON object with the following fields:
* **question:** The user's question
* **history:** (Optional) Previous conversation history
* **api_key:** Your API key
* **embeddings_key:** Your embeddings key
* **active_docs:** The location of active documentation
Here is a JavaScript Fetch Request example:
```js
// answer (POST http://127.0.0.1:5000/api/answer)
fetch("http://127.0.0.1:5000/api/answer", {
@ -18,8 +34,9 @@ fetch("http://127.0.0.1:5000/api/answer", {
.then(console.log.bind(console))
```
In response, you will get a JSON document like this one:
**Response**
In response, you will get a JSON document containing the answer,query and the result:
```json
{
"answer": " Hi there! How can I help you?\n",
@ -28,10 +45,17 @@ In response, you will get a JSON document like this one:
}
```
### /api/docs_check
It will make sure documentation is loaded on a server (just run it every time user is switching between libraries (documentations)).
It's a POST request that sends a JSON in a body with 1 value. Here is a JavaScript fetch example:
### 2. /api/docs_check
**Description:**
This endpoint will make sure documentation is loaded on the server (just run it every time user is switching between libraries (documentations)).
**Request:**
Headers: Content-Type should be set to "application/json; charset=utf-8"
Request Body: JSON object with the field:
* **docs:** The location of the documentation
```js
// answer (POST http://127.0.0.1:5000/api/docs_check)
fetch("http://127.0.0.1:5000/api/docs_check", {
@ -45,7 +69,9 @@ fetch("http://127.0.0.1:5000/api/docs_check", {
.then(console.log.bind(console))
```
In response, you will get a JSON document like this one:
**Response:**
In response, you will get a JSON document like this one indicating whether the documentation exists or not.:
```json
{
"status": "exists"
@ -53,18 +79,36 @@ In response, you will get a JSON document like this one:
```
### /api/combine
Provides JSON that tells UI which vectors are available and where they are located with a simple get request.
### 3. /api/combine
**Description:**
This endpoint provides information about available vectors and their locations with a simple GET request.
**Request:**
Method: GET
**Response:**
Response will include:
`date` , `description` , `docLink` , `fullName` , `language` , `location` (local or docshub), `model` , `name` , `version` .
Example of JSON in Docshub and local:
< img width = "295" alt = "image" src = "https://user-images.githubusercontent.com/15183589/224714085-f09f51a4-7a9a-4efb-bd39-798029bb4273.png" >
### /api/upload
Uploads file that needs to be trained, response is JSON with task ID, which can be used to check on task's progress
### 4. /api/upload
**Description:**
This endpoint is used to upload a file that needs to be trained, response is JSON with task ID, which can be used to check on task's progress.
**Request:**
Method: POST
Request Body: A multipart/form-data form with file upload and additional fields, including "user" and "name."
HTML example:
```html
@ -79,20 +123,24 @@ HTML example:
< / form >
```
Response:
```json
{
"status": "ok",
"task_id": "b2684988-9047-428b-bd47-08518679103c"
}
**Response:**
JSON response with a status and a task ID that can be used to check the task's progress.
```
### /api/task_status
Gets task status (`task_id`) from `/api/upload` :
### 5. /api/task_status
**Description:**
This endpoint is used to get the status of a task (`task_id`) from `/api/upload`
**Request:**
Method: GET
Query Parameter: task_id (task ID to check)
**Sample JavaScript Fetch Request:**
```js
// Task status (Get http://127.0.0.1:5000/api/task_status)
fetch("http://localhost:5001/api/task_status?task_id=b2d2a0f4-387c-44fd-a443-e4fe2e7454d1", {
fetch("http://localhost:5001/api/task_status?task_id=YOUR_TASK_ID ", {
"method": "GET",
"headers": {
"Content-Type": "application/json; charset=utf-8"
@ -102,7 +150,8 @@ fetch("http://localhost:5001/api/task_status?task_id=b2d2a0f4-387c-44fd-a443-e4f
.then(console.log.bind(console))
```
Responses:
**Response:**
There are two types of responses:
1. While the task is still running, the 'current' value will show progress from 0 to 100.
@ -134,9 +183,14 @@ There are two types of responses:
}
```
### /api/delete_old
Deletes old Vector Stores:
### 6. /api/delete_old
**Description:**
This endpoint is used to delete old Vector Stores.
**Request:**
Method: GET
```js
// Task status (GET http://127.0.0.1:5000/api/docs_check)
fetch("http://localhost:5001/api/task_status?task_id=b2d2a0f4-387c-44fd-a443-e4fe2e7454d1", {
@ -148,8 +202,10 @@ fetch("http://localhost:5001/api/task_status?task_id=b2d2a0f4-387c-44fd-a443-e4f
.then((res) => res.text())
.then(console.log.bind(console))
Response:
```
**Response:**
JSON response indicating the status of the operation.
```json
{ "status": "ok" }
```