API de Drafts
Endpoints para editar, ler e resetar o rascunho de uma branch
Base URL
https://services.antonnia.com/assistants/api/v2/assistants/{assistant_id}/branches/{branch_name}/draftAplicar changeset
PATCH /assistants/{assistant_id}/branches/{branch_name}/draftAplica múltiplas mudanças no draft em uma única requisição. Todos os campos são opcionais — envie apenas o que mudou.
Request body
| Campo | Tipo | Descrição |
|---|---|---|
context | object | { assistant_name?, assistant_description? } |
config | object | { initial_node_id? } |
nodes | object | { upsert: NodeInput[], delete: string[] } |
tools | object | { upsert: ToolInput[], delete: string[] } |
variables | object | { upsert: VariableInput[], delete: string[] } |
Nodes no mesmo batch podem se referenciar entre si. Por exemplo, um node com next_node: "node-b" pode ser enviado junto com o node "node-b" no mesmo array de upsert.
Atualizado
context e config seguem RFC 7396 JSON Merge Patch: campos omitidos são preservados, null remove a chave, e objetos aninhados são mesclados recursivamente.
Exemplo
curl -X PATCH "https://services.antonnia.com/assistants/api/v2/assistants/$ASSISTANT_ID/branches/$BRANCH_NAME/draft" \
-H "Authorization: Bearer sk_live_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"nodes": {
"upsert": [
{
"id": "farewell",
"name": "Despedida",
"description": "Node de encerramento",
"type": "llm",
"config": {
"node_type": "llm",
"instructions": "Agradeça o cliente e encerre a conversa."
}
}
],
"delete": ["old_node"]
}
}'response = httpx.patch(
f"{BASE_URL}/assistants/{assistant_id}/branches/{branch_name}/draft",
headers=HEADERS,
json={
"nodes": {
"upsert": [
{
"id": "farewell",
"name": "Despedida",
"description": "Node de encerramento",
"type": "llm",
"config": {
"node_type": "llm",
"instructions": "Agradeça o cliente e encerre a conversa.",
},
}
],
"delete": ["old_node"],
}
},
)Resposta 200
{
"context_updated": false,
"config_updated": false,
"nodes_upserted": 1,
"nodes_deleted": 1,
"tools_upserted": 0,
"tools_deleted": 0,
"variables_upserted": 0,
"variables_deleted": 0
}Ler snapshot do draft
GET /assistants/{assistant_id}/branches/{branch_name}/draftRetorna o snapshot completo montado a partir de todos os arquivos do draft.
Query parameters
| Parâmetro | Tipo | Descrição |
|---|---|---|
prefix | string | Filtrar por prefixo de path (ex: nodes/, tools/) |
Resposta 200
{
"context": {
"assistant_name": "Suporte ao Cliente",
"assistant_description": "Assistente de suporte para e-commerce"
},
"graph": {
"initial_node_id": "greeting",
"nodes": { ... }
},
"tools": [ ... ],
"variables": [ ... ]
}Listar paths do draft
GET /assistants/{assistant_id}/branches/{branch_name}/draft/indexLista apenas os paths dos arquivos no draft, sem conteúdo. Útil para verificar o que existe antes de fazer edições.
Query parameters
| Parâmetro | Tipo | Descrição |
|---|---|---|
prefix | string | Filtrar por prefixo (opcional) |
Resposta 200
["context", "config", "nodes/greeting", "nodes/farewell", "tools/check_order"]Descartar arquivo
POST /assistants/{assistant_id}/branches/{branch_name}/draft/discardReverte um único arquivo do draft para o estado do HEAD.
Request body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
path | string | Sim | Path do arquivo (ex: nodes/greeting) |
Resposta 204
Sem conteúdo.
Resetar draft
POST /assistants/{assistant_id}/branches/{branch_name}/draft/resetReseta todos os arquivos do draft para o estado de um commit específico.
Request body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
commit_id | string | Sim | ID do commit |
Resposta 204
Sem conteúdo.
CRUD de Nodes
Listar nodes
GET /draft/nodesObter node
GET /draft/nodes/{node_id}Criar/substituir node
PUT /draft/nodes/{node_id}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome do node |
description | string | Não | Descrição (padrão: "") |
type | string | Sim | Tipo: llm, classifier, router, logic, skill |
config | object | Não | Configuração específica do tipo |
position | object | Não | Posição no editor visual { x, y } |
Atualizar parcialmente
PATCH /draft/nodes/{node_id}Envia apenas os campos que deseja alterar.
Atualizado
Segue RFC 7396 JSON Merge Patch: campos omitidos são preservados, null remove a chave, objetos aninhados são mesclados recursivamente.
# Troca apenas o model, preserva instructions, next_node, tools, etc.
curl -X PATCH ".../draft/nodes/greeting" \
-d '{"config": {"model": "openai:gpt-5.4"}}'
# Remove next_node (vira null no config)
curl -X PATCH ".../draft/nodes/greeting" \
-d '{"config": {"next_node": null}}'Deletar node
DELETE /draft/nodes/{node_id}Resposta 204.
CRUD de Tools
Listar tools
GET /draft/toolsObter tool
GET /draft/tools/{tool_id}Criar/substituir tool
PUT /draft/tools/{tool_id}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome da tool |
description | string | Sim | Descrição |
request | object | Sim | { url, method } — endpoint da API externa |
parameters | object | Não | Schema de parâmetros |
should_close | boolean | Não | Se a tool encerra a sessão |
Atualizar parcialmente
PATCH /draft/tools/{tool_id}Deletar tool
DELETE /draft/tools/{tool_id}CRUD de Variables
Listar variables
GET /draft/variablesObter variable
GET /draft/variables/{variable_id}Criar/substituir variable
PUT /draft/variables/{variable_id}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome da variável |
permission | string | Sim | read_only ou read_write |
type | string | Sim | string, number, boolean, etc. |
default_value | any | Não | Valor padrão |
Atualizar parcialmente
PATCH /draft/variables/{variable_id}Deletar variable
DELETE /draft/variables/{variable_id}Config
Obter config
GET /draft/configSubstituir config
PUT /draft/config| Campo | Tipo | Descrição |
|---|---|---|
initial_node_id | string | ID do node inicial do grafo |
Atualizar parcialmente
PATCH /draft/configContext
Obter context
GET /draft/contextSubstituir context
PUT /draft/context| Campo | Tipo | Descrição |
|---|---|---|
assistant_name | string | Nome do assistente |
assistant_description | string | Descrição do assistente |
Atualizar parcialmente
PATCH /draft/context