API#

Para integração com sistemas externos (se necessário), o Sherpa AI Server oferece um conjunto de ferramentas para troca de dados via API.

A seção "API" é um guia sobre os métodos de API disponíveis no formato Swagger. Nesta seção, estão apresentadas as seguintes abas:

  1. Chave
  2. Armazenamento
  3. Log
  4. Contas
  5. Servidor de IA

1. Chave (API Key)#

Nesta seção, o usuário pode ver sua chave de acesso única à API no campo Chave. Além disso, ao alterar este campo, é necessário confirmar a ação pressionando um dos botões:

(Assignment) - Atribuir nova chave;

(Refresh) - Atualizar chave atual.

Abaixo está o campo informativo "Authorization", que é usado para fornecer o token de acesso, confirmando que o Usuário tem permissão para executar a ação solicitada.

Exemplo:

“Bearer” — tipo de token,

“Y2Y5M2U3OGUtMDk1ZC00MGNjLTkwNWUtZTYyNjUwM_______” — o próprio token que o servidor usará para identificar o Usuário.

As solicitações à API devem incluir obrigatoriamente a chave da API, que é armazenada nas configurações da Conta. Exemplos detalhados de solicitações são apresentados na seção de cada bloco separadamente.

Códigos de resposta:

2. Armazenamento#

Permite gerenciar o Armazenamento. O usuário pode criar novas pastas e arquivos, obter informações sobre pastas e arquivos, atualizar informações sobre pastas e arquivos, bem como excluir pastas e arquivos.

Nesta página, estão as abas com os métodos:

Ao clicar no ícone à direita do método desejado, a página correspondente é exibida:

1. Criação de nova pasta#

  • Endpoint: /api/folders/create
  • Método: POST;
  • Autorização: obrigatória;
  • Parâmetros:
    • Name: Nome da nova pasta;
    • Description: Descrição para a nova pasta.
  • Exemplo:
SolicitaçãoResposta

```json

{

"Name": "Nova Pasta 1",

}

```

[

"guid": "16f94238-ede9-435b-a001-1489b32e7dc2",

]

2. Obtenção de informações sobre a pasta por GUID#

  • Endpoint: /api/folders/read/{guid}
  • Método: GET;
  • Autorização: obrigatória;
  • Parâmetros:
    • Guid (obrigatório): Guid da nova pasta.
  • Exemplo:
Solicitação Resposta
/api/folders/read/4dd6abf4-daa3-45d0-9347-6780c2b46b0c

json</p><p> {</p><p> "id": 1,</p><p> "guid": "4dd6abf4-daa3-45d0-9347-6780c2b46b0c",</p><p> "name": "Pasta de Teste 1",</p><p> "description": "Minha nova pasta de teste",</p><p> "created": "2023-01-29 10:29:25",</p><p> "updated": "2023-01-29 10:44:09",</p><p> "is_deleted": 0,</p><p> "account_id": 1,</p><p> }</p><p>

3. Obtenção da lista de pastas relacionadas ao GUID#

  • Endpoint: /api/folders/list
  • Método: GET;
  • Autorização: obrigatória;
  • Parâmetros: nenhum;
  • Exemplo:
SolicitaçãoResposta
/api/folders/list

```json

[

{

"id": 1,

"guid": "4dd6abf4-daa3-45d0-9347-6780c2b46b0c",

"name": "Pasta de Teste 1",

"description": "Minha nova pasta de teste",

"created": "2023-01-29 10:29:25",

"updated": "2023-01-29 10:44:09",

"is_deleted": 0,

"account_id": 1,

},

{

"id": 2,

"guid": "4dd6abf4-daa3-45d0-9347-6780c2b46a3c",

"name": "Pasta de Teste 2",

"description": "Minha outra nova pasta de teste",

"created": "2023-10-05 10:59:41",

"updated": "2023-10-05 10:59:41",

"is_deleted": 0,

"account_id": 1,

}

]

```

4. Atualização de informações sobre a pasta por GUID#

  • Endpoint: /api/folders/update
  • Método: PUT;
  • Autorização: obrigatória;
  • Parâmetros:
    • Guid (obrigatório): Guid da pasta;
    • Name: Nome da nova pasta;
    • Description: Descrição para a nova pasta.
  • Exemplo:
SolicitaçãoResposta

```json

{

"Guid": "554ab883-1f82-48e1-bb12-5049002e7d70",

"Name": "Nome da Nova Pasta",

}

```

[]

5. Criação de novo arquivo#

  • Endpoint: /api/files/create
  • Método: POST;
  • Autorização: obrigatória;
  • Parâmetros:
    • name (obrigatório): Nome do arquivo;
    • name_new (obrigatório): Novo nome do arquivo;
    • description (obrigatório): Descrição do arquivo;
    • folder_id (obrigatório): GUID ou caminho para a pasta onde o arquivo será adicionado;
    • Metadata (obrigatório): Metadados do arquivo;
    • file (obrigatório): Arquivo em formato binário, ou em codificações Base16 / Base32.
  • Exemplo:
SolicitaçãoResposta

```json

{

"name": "exemplo.txt",

"name_new": "exemplo_novo.txt",

"description": "Descrição do arquivo",

"folder_id": "123e4567-e89b-12d3-a456-426614174000",

"Metadata": {},

"file": "conteudo_do_arquivo",

}

```

[]

6. Obtenção de informações sobre o arquivo por GUID#

  • Endpoint: /api/files/read/{guid}
  • Método: GET;
  • Autorização: obrigatória;
  • Parâmetros:
    • Name (obrigatório): Nome do novo arquivo.
  • Exemplo:

| Solicitação | Resposta | | --------------------------------------------------------------------------------- | ------ ||

json</p><p> {</p><p> "Name": "example.txt",</p><p> }</p><p>

| [] |

7. Atualização de informações do arquivo por GUID#

  • Endpoint: /api/files/update
  • Método: PUT;
  • Autorização: obrigatória;
  • Parâmetros:
    • Name (obrigatório): Nome do novo arquivo;
    • folder_guid: ID da pasta onde o arquivo deve ser adicionado;
    • file: Arquivo em formato binário, ou em codificações Base16 / Base32;
  • Exemplo:
Solicitação Resposta

json</p><p> {</p><p> "Name": "example.txt",</p><p> }</p><p>

[]

8. Exclusão de arquivo/pasta#

  • Endpoint: /api/files/delete
  • Método: DELETE;
  • Autorização: obrigatória;
  • Parâmetros:
    • file_folder_guid (obrigatório): GUID ou caminho para o arquivo ou pasta;
    • type_processing (obrigatório): Tipo de processamento. Valores possíveis:
      0 = Auto, 1 = File, 2 = Directory.
  • Exemplo:
SolicitaçãoResposta

```json

{

"file_folder_guid": "123e4567-e89b-12d3-a456-426614174000",

"type_processing": 0,

}

```

[]

9. Upload de arquivo#

  • Endpoint: /api/files/uploadfile
  • Método: POST;
  • Autorização: obrigatória;
  • Parâmetros:
    • file (obrigatório): Arquivo para upload;
    • folder_id: ID da pasta onde o arquivo deve ser adicionado;
    • metadata: Metadados do arquivo.
  • Exemplo:
SolicitaçãoResposta

```json

[

"file": "@/path/to/Document.pdf",

"folder_id=4b5f2f2e-1c8a-4d3c-9b2a-b0f7d9a0a123",

"metadata":

{

"source": "kb",

"tags": ["policy","2025"]

}
]

```

```json

{

"id": 123,

"object": "file",

"purpose": "assistants",

"filename": "Document.pdf",

"bytes": 1048576,

"created_at": 1726742400,

"status": "processed",

"status_details": "Indexed",

"tools_type": "retrieval"

}
```

10. Download de arquivo por GUID#

  • Endpoint: /api/files/download/{guid}
  • Método: GET;
  • Autorização: obrigatória;
  • Parâmetros:
    • filename (obrigatório): Nome do arquivo.
  • Exemplo:
Solicitação Resposta

json</p><p> {<br> "filename": "example.txt",<br> }<br>

json</p><p> {</p><p> "result": "0"</p><p> }</p><p>

3. Log#

Permite gerenciar Logs. O usuário pode criar um novo Log, obter informações sobre o Log, atualizar informações sobre o Log, bem como excluir o Log.

Na parte superior da página, há uma tabela com todos os níveis de Log:

Na parte inferior, estão as abas com os métodos:

Ao clicar no ícone à direita do método desejado, a página correspondente é exibida:

1. Criação de Log#

  • Endpoint: /api/log/create
  • Método: POST;
  • Autorização: obrigatória;
  • Parâmetros:
    • RobotGUID: GUID do Robô;
    • ProcessVersionGUID: GUID da versão do Processo;
    • JobGUID: GUID do Trabalho;
    • Level: nível de Log;

Message (obrigatório): texto do Log.

  • Exemplo:
SolicitaçãoResposta

```json

{

"RobotGUID": "16f94238-ede9-435b-a001-1489b32e7dc2",

"ProcessVersionGUID": "c39713ea-d8b9-4669-976e-5ff39677dc64",

"JobGUID": "70ce211b-3c9a-48f6-8e71-11088b41b825",

"Level": 1,

"Message": "no message",

}

```

[]

2. Obtenção de informações sobre o Log por GUID#

  • Endpoint: /api/log/read/{guid}
  • Método: GET;
  • Autorização: obrigatória;
  • Parâmetros:
    • Guid (obrigatório): Guid do Log.
  • Exemplo:
SolicitaçãoResposta
/api/log/read/c39713ea-d8b9-4669-976e-5ff39677dc64

```json

{

"id": "1",

"guid": "16f94238-ede9-435b-a001-1489b32e7dc2",

"robot_id": "16",

"process_version_id": "39",

"job_id": "70",

"Level": 1,

"Message": "no message",

"created_at": "2023-09-17 15:39:06",

"updated_at": "2023-09-17 16:39:06",

}

```

3. Obtenção da lista de arquivos relacionados ao GUID#

  • Endpoint: /api/log/list
  • Método: POST;
  • Autorização: obrigatória;
  • Parâmetros: nenhum.
  • Exemplo:
Solicitação Resposta
/api/log/list []

4. Exclusão de Logs pertencentes à conta atual e criados antes do tempo selecionado#

  • Endpoint: /api/log/purge
  • Método: DELETE;
  • Autorização: obrigatória;
  • Parâmetros:
    • Time (obrigatório): timestamp em formato Unix (Unix timestamp);
  • Exemplo:
Solicitação Resposta

json</p><p> {</p><p> "Time": "1590481487",</p><p> }</p><p>

[]

4. Contas#

Permite gerenciar Contas. O usuário pode criar uma nova Conta, obter informações sobre a Conta, atualizar informações sobre a Conta, bem como excluir a Conta.

Nesta página, há abas com os métodos:

Ao clicar no ícone à direita do método desejado, a página correspondente é exibida:

  • Endpoint: /api/account/create
  • Método: POST;
  • Autorização: obrigatória;
  • Parâmetros:
    • Login (obrigatório) — Login para a nova Conta;
    • Password (obrigatório) — Senha para a nova Conta;
    • FirstName — Nome para a nova Conta;
    • LastName — Sobrenome para a nova Conta;
    • Email — E-mail para a nova Conta;
    • Phone — Telefone para a nova Conta;
    • Company — Empresa para a nova Conta;
    • Department — Departamento para a nova Conta.
  • Exemplo:| Requisição | Resposta | | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | |

    json</p><p> {</p><p> "Login": "Nova Conta de Teste",</p><p> "Password": "newPassword123",</p><p> }</p><p>

    | ["guid": "c39713ea-d8b9-4669-976e-5ff39677dc64"] |

2. Obtenção de informações da Conta pelo GUID#

  • Endpoint: /api/account/read/{guid}
  • Método: GET;
  • Autorização: obrigatória;
  • Parâmetros:
    • GUID (obrigatório): GUID da Conta.
  • Exemplo:
Requisição Resposta
/api/account/read/c39713ea-d8b9-4669-976e-5ff39677dc64

json</p><p> {</p><p> "id": "5",</p><p> "guid": "554ab883-1f82-48e1-bb12-5049002e7d70",</p><p> "login": "nova Conta",</p><p> "password": "123455678",</p><p> "first name": "Vasya",</p><p> "last name": "Ivanov",</p><p> }</p><p>

3. Atualização de informações da Conta pelo GUID#

  • Endpoint: /api/account/update
  • Método: PUT;
  • Autorização: obrigatória;
  • Parâmetros:
    • Guid (obrigatório) — GUID da Conta a ser atualizada;
    • Login — Login da Conta a ser atualizada;
    • Password — Senha da Conta a ser atualizada;
    • FirstName — Nome na Conta a ser atualizado;
    • LastName — Sobrenome da Conta a ser atualizado;
    • Email — E-mail da Conta a ser atualizado;
    • Phone — Telefone na Conta a ser atualizado;
    • Company — Empresa da Conta a ser atualizada;
    • Department — Departamento da Conta a ser atualizado.
  • Exemplo:
Requisição Resposta

json</p><p> {</p><p> "Guid": "554ab883-1f82-48e1-bb12-5049002e7d70", </p><p> "Login": "Conta de Teste",</p><p> }</p><p>

[]

4. Exclusão da Conta pelo GUID#

  • Endpoint: /api/account/delete/{guid}
  • Método: DELETE;
  • Autorização: obrigatória;
  • Parâmetros:
    • Guid (obrigatório): Guid da Conta;
  • Exemplo:
Requisição Resposta
/api/account/delete/554ab883-1f82-48e1-bb12-5049002e7d70 []

5. Servidor de IA#

Permite gerenciar redes neurais. O usuário pode enviar um objeto JSON e receber uma resposta da rede neural, obter informações sobre o modelo atualmente utilizado, receber uma resposta do Assistente ou enviar uma mensagem no chat.

Ao clicar no ícone à direita do método desejado, a página correspondente é exibida:

1. Adição de blocos de texto a um arquivo existente#

  • Endpoint: /api/files/addchunk
  • Método: POST;
  • Autorização: obrigatória;
  • Parâmetros:
    • text_chunk (obrigatório): Bloco de texto;
    • guid_file (obrigatório): GUID do arquivo ou caminho para o arquivo;
    • metadata (obrigatório): Metadados do bloco.
  • Exemplo:
RequisiçãoResposta

```json

{

"text_chunk": "Bloco de texto",

"guid_file": "123e4567-e89b-12d3-a456-426614174000",

"metadata": {},

}

```

[]

2. Encontrar embeddings para um texto fornecido#

  • Endpoint: /api/files/search
  • Método: GET;
  • Autorização: obrigatória;
  • Parâmetros:
    • text_for_search (obrigatório): Texto para busca;
    • n_top (obrigatório): Número de resultados principais;
    • files_ids (obrigatório): String JSON com a lista de GUID ou caminhos para arquivos;
    • folder_ids (obrigatório): String JSON com a lista de GUID ou caminhos para pastas;
    • enable_subfolders (obrigatório): Habilitar subpastas. Valores possíveis: 0 = Falso, 1 = Verdadeiro.
  • Exemplo:
RequisiçãoResposta

```json

{

"text_for_search": "exemplo de texto",

"n_top": 5,

"files_ids": "[\"123e4567-e89b-12d3-a456-426614174000\", \"123e4567-e89b-12d3-a456-426614174001\"]",

"folder_ids": "[\"123e4567-e89b-12d3-a456-426614174002\", \"123e4567-e89b-12d3-a456-426614174003\"]",

"enable_subfolders": 1

}

```

[]

3. Obtenção de resposta da rede neural#

  • Endpoint: /api/threads/message
  • Método: POST;
  • Autorização: obrigatória;
  • Parâmetros:
    • messages (obrigatório): Array de objetos, cada um representando uma mensagem;
    • content: Texto da mensagem;
    • role: Papel do remetente da mensagem. Valores possíveis: system, user;
    • name: Nome do remetente da mensagem;
    • temperature: Número de ponto flutuante que determina o grau de aleatoriedade nas respostas da rede neural. Valor padrão: 0.7;
    • model (obrigatório): String que indica o caminho para o modelo, por exemplo, /model-store/meta-llama/Meta-Llama-3-8B-Instruct;
    • assistant_id: Identificador do assistente;
    • thread_id: Identificador do chat;
    • info: Informações do sistema.
  • Exemplo:
RequisiçãoResposta

```json

{

"messages": [

{

"content": "Olá, como você está?",

"role": "user",

"name": "Ivan"

},

{

"content": "Tudo bem, obrigado!",

"role": "system",

"name": "Sistema"

}

]

"model": "/model-store/meta-llama/Meta-Llama-3-8B-Instruct",

"temperature": 0.7,

"assistant_id": "123e4567-e89b-12d3-a456-426614174000",

"thread_id": 200

}

```

[]

4. Obtenção de informações sobre o modelo atualmente utilizado#

  • Endpoint: /api/threads/models
  • Método: GET;
  • Autorização: obrigatória;
  • Parâmetros: nenhum.
  • Exemplo:
    RequisiçãoResposta
    /api/threads/models

    json</p><p> {</p><p> "object": "list",</p><p> "data": [</p><p> {</p><p> "id": "/model-store/meta-llama/Meta-Llama-3-8B-Instruct", </p><p> "object": "model",</p><p> "created": 1735113788,</p><p> "owned_by": "vllm",</p><p> "root": "/model-store/meta-llama/Meta-Llama-3-8B-Instruct",</p><p> "parent": null,</p><p> "permission": [</p><p> {</p><p> "id": "modelperm-d7ddf889e9aa423b9949d1cdc551ff21",</p><p> "object": "model_permission",</p><p> "created": 1735113788,</p><p> "allow_create_engine": false,</p><p> "allow_sampling": true,</p><p> "allow_logprobs": true,</p><p> "allow_search_indices": false,</p><p> "allow_view": true,</p><p> "allow_fine_tuning": false,</p><p> "organization": "*",</p><p> "group": null,</p><p> "is_blocking": false</p><p> }</p><p> ]</p><p> }</p><p> ]</p><p> }</p><p>

5. Recebendo mensagem do Assistente#

  • Endpoint: /api/threads/getUpdates
  • Método: GET;
  • Autorização: obrigatória;
  • Parâmetros:
    • assistant_id (obrigatório): Identificador do assistente;
    • offset: Identificador da mensagem a partir da qual é necessário obter a lista de mensagens;
    • thread_id (obrigatório): Identificador do chat.
  • Exemplo:
RequisiçãoResposta
/api/threads/getUpdates?assistant_id=123e4567-e89b-12d3-a456-426614174000&offset=0&thread_id=221

```json

{

"error": "Erro de licenciamento: licença ausente, expirada, não ativada ou limites atingidos"

}

ou

{

"result": 1,

"data": [

{

"id": "1195",

"content": "{\"type\":\"text\",\"text\":{\"value\":\"olá\",\"annotations\":[]}}",

"account_id": "1",

"is_deleted": "0",

"role": "user",

"thread_id": "221",

"created": "2024-09-11 09:08:48",

"updated": "2024-09-11 09:08:48",

"assistant_id":"123e4567-e89b-12d3-a456-426614174000",

"info": "{\"TestPrm\":\"TestData\"}",

"folder_id": "[]",

"file_id": "[]",

"update_id": null

},

{

"id": "1196",

"thread_id": "221",

"created": "2024-09-11 09:08:49",

"updated": "2024-09-11 09:08:49",

"content": "{\"type\":\"text\",\"text\":{\"value\":\"Olá! Estou feliz em vê-lo! Como posso ajudá-lo hoje?\",\"annotations\":[]}}",

"role": "assistant",

"account_id": "1",

"is_deleted": "0",

"folder_id": null,

"file_id": null,

"update_id": null

}

]

}

```

6. Enviando mensagem no chat#

  • Endpoint: /api/threads/chat
  • Método: POST;
  • Autorização: obrigatória;
  • Parâmetros:
    • thread_id (obrigatório): Identificador do chat;
    • role (obrigatório): Papel do remetente da mensagem (por exemplo, assistant);
    • content (obrigatório): Texto da mensagem;
    • assistant_id: Identificador do assistente;
    • model_id: Identificador do grupo de modelos;
    • temperature: Número de ponto flutuante que determina o grau de aleatoriedade nas respostas da rede neural. Valor padrão: 0.7;
    • prompt: Contexto inicial ou instrução para o modelo;
    • title: Título do chat;
    • file_id: Lista de IDs de arquivos anexados à mensagem (array JSON);
    • folder_id: Lista de IDs de pastas (ou objetos com id) anexados à mensagem (array JSON),
    • info: Informação do sistema.
  • Exemplo:
Requisição Resposta

json</p><p>{<br> "thread_id": 200,<br> "role": "assistant",<br> "content": "Olá! Como posso ajudá-lo hoje?",<br> "file_id": [101, 102],<br> "folder_id": [201, 202],</p><p> "info": ""<br>}<br>

json</p><p> [</p><p> "result": 1,<br> "data": {<br> "message_id": 1234,</p><p> "thread_id": 200,<br> "file_id": [101, 102],<br> "folder_id": [201, 202],</p><p> "info": ""<br> }</p><p> ]</p><p>