Fluxos
Lista, cria, consulta, substitui e apaga os fluxos de automação do seller.
O desenho dos fluxos, os gatilhos e as ações estão na home da seção. Aqui estão as rotas de cadastro.
Listar fluxos
Devolve todos os fluxos do seller que não foram apagados, do mais novo para o mais antigo, com os contadores dos últimos 7 dias.
/api/v1/vendor/flowsSellerListar fluxos
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Exemplo de requisição
curl -X GET "$BASE_URL/api/v1/vendor/flows" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"flows": [
{
"id": "52cb85db-b3fd-4683-b9db-efd8b6940c96",
"name": "Avisar pedido grande",
"status": "paused",
"trigger_type": "order.created",
"trigger_config": {},
"graph": {
"nodes": [
{
"id": "n_trigger",
"type": "trigger",
"config": {},
"position": {
"x": 240,
"y": 40
}
},
{
"id": "n_cond",
"type": "condition",
"config": {
"field": "order.total",
"op": "gte",
"value": 100000
},
"position": {
"x": 240,
"y": 180
}
},
{
"id": "n_action",
"type": "action",
"config": {
"kind": "notify_inbox",
"params": {
"title": "Pedido grande",
"body": "Chegou um pedido acima de R$ 1.000,00"
}
},
"position": {
"x": 120,
"y": 320
}
},
{
"id": "n_exit",
"type": "exit",
"config": {},
"position": {
"x": 240,
"y": 440
}
}
],
"edges": [
{
"id": "e1",
"from": "n_trigger",
"to": "n_cond",
"branch": null
},
{
"id": "e2",
"from": "n_cond",
"to": "n_action",
"branch": "yes"
},
{
"id": "e3",
"from": "n_cond",
"to": "n_exit",
"branch": "no"
},
{
"id": "e4",
"from": "n_action",
"to": "n_exit",
"branch": null
}
]
},
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"runs_7d": 3,
"failed_7d": 0,
"created_at": "2026-10-11T22:20:00Z",
"updated_at": "2026-10-11T22:20:00Z"
}
],
"total": 1
}Campos da resposta
flowsobject[]Os fluxos.
iduuidnamestringstatusstringdraftactivepausedtrigger_typestringtrigger_configobject{}.graphobjectvendor_iduuidruns_7dinteger0.failed_7dintegercreated_atstringupdated_atstringtotalintegerErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, a loja está em análise de cadastro ou falta o privilégio de ajustes (vendor_settings ou equivalente). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |
Criar fluxo
Cria um fluxo em rascunho. O servidor confere agora só a lista de ações permitidas; o resto do grafo é conferido em activate (e em test).
/api/v1/vendor/flowsSellerCriar fluxo
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Corpo da requisição
namestringobrigatóriotrigger_typestringobrigatóriotrigger_configobject{}.graphobjectobrigatórioO desenho do fluxo.
graph.nodesobject[]obrigatórioid, type (trigger, condition, action, exit), config e position (x, y, só para o editor visual).graph.edgesobject[]obrigatórioid, from, to e branch (yes ou no ao sair de uma condição; null nos demais).Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/flows" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Avisar pedido grande", "trigger_type": "order.created", "graph": {"nodes": [{"id": "n_trigger", "type": "trigger", "config": {}, "position": {"x": 240, "y": 40}}, {"id": "n_cond", "type": "condition", "config": {"field": "order.total", "op": "gte", "value": 100000}, "position": {"x": 240, "y": 180}}, {"id": "n_action", "type": "action", "config": {"kind": "notify_inbox", "params": {"title": "Pedido grande", "body": "Chegou um pedido acima de R$ 1.000,00"}}, "position": {"x": 120, "y": 320}}, {"id": "n_exit", "type": "exit", "config": {}, "position": {"x": 240, "y": 440}}], "edges": [{"id": "e1", "from": "n_trigger", "to": "n_cond", "branch": null}, {"id": "e2", "from": "n_cond", "to": "n_action", "branch": "yes"}, {"id": "e3", "from": "n_cond", "to": "n_exit", "branch": "no"}, {"id": "e4", "from": "n_action", "to": "n_exit", "branch": null}]}}'Resposta
{
"id": "52cb85db-b3fd-4683-b9db-efd8b6940c96",
"name": "Avisar pedido grande",
"status": "draft",
"trigger_type": "order.created",
"trigger_config": {},
"graph": {
"nodes": [
{
"id": "n_trigger",
"type": "trigger",
"config": {},
"position": {
"x": 240,
"y": 40
}
},
{
"id": "n_cond",
"type": "condition",
"config": {
"field": "order.total",
"op": "gte",
"value": 100000
},
"position": {
"x": 240,
"y": 180
}
},
{
"id": "n_action",
"type": "action",
"config": {
"kind": "notify_inbox",
"params": {
"title": "Pedido grande",
"body": "Chegou um pedido acima de R$ 1.000,00"
}
},
"position": {
"x": 120,
"y": 320
}
},
{
"id": "n_exit",
"type": "exit",
"config": {},
"position": {
"x": 240,
"y": 440
}
}
],
"edges": [
{
"id": "e1",
"from": "n_trigger",
"to": "n_cond",
"branch": null
},
{
"id": "e2",
"from": "n_cond",
"to": "n_action",
"branch": "yes"
},
{
"id": "e3",
"from": "n_cond",
"to": "n_exit",
"branch": "no"
},
{
"id": "e4",
"from": "n_action",
"to": "n_exit",
"branch": null
}
]
},
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"runs_7d": 0,
"failed_7d": 0,
"created_at": "2026-10-11T22:20:00Z",
"updated_at": "2026-10-11T22:20:00Z"
}Campos da resposta
(campos / fields)objectErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo que não é JSON. | {"error":"invalid body"} |
| 422 | name ou trigger_type vazio. | {"error":"failed","detail":"name and trigger_type required"} |
| 422 | Ação fora da lista permitida ao seller. A estrutura do grafo só é conferida em testar e ativar. | {"error":"invalid_graph","invalid_nodes":["n_action"],"reason":"action not allowed for vendor flows"} |
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, a loja está em análise de cadastro ou falta o privilégio de ajustes (vendor_settings ou equivalente). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |
Consultar fluxo
/api/v1/vendor/flows/{id}SellerConsultar fluxo
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X GET "$BASE_URL/api/v1/vendor/flows/52cb85db-b3fd-4683-b9db-efd8b6940c96" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"id": "52cb85db-b3fd-4683-b9db-efd8b6940c96",
"name": "Avisar pedido grande",
"status": "draft",
"trigger_type": "order.created",
"trigger_config": {},
"graph": {
"nodes": [
{
"id": "n_trigger",
"type": "trigger",
"config": {},
"position": {
"x": 240,
"y": 40
}
},
{
"id": "n_cond",
"type": "condition",
"config": {
"field": "order.total",
"op": "gte",
"value": 100000
},
"position": {
"x": 240,
"y": 180
}
},
{
"id": "n_action",
"type": "action",
"config": {
"kind": "notify_inbox",
"params": {
"title": "Pedido grande",
"body": "Chegou um pedido acima de R$ 1.000,00"
}
},
"position": {
"x": 120,
"y": 320
}
},
{
"id": "n_exit",
"type": "exit",
"config": {},
"position": {
"x": 240,
"y": 440
}
}
],
"edges": [
{
"id": "e1",
"from": "n_trigger",
"to": "n_cond",
"branch": null
},
{
"id": "e2",
"from": "n_cond",
"to": "n_action",
"branch": "yes"
},
{
"id": "e3",
"from": "n_cond",
"to": "n_exit",
"branch": "no"
},
{
"id": "e4",
"from": "n_action",
"to": "n_exit",
"branch": null
}
]
},
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"runs_7d": 0,
"failed_7d": 0,
"created_at": "2026-10-11T22:20:00Z",
"updated_at": "2026-10-11T22:20:00Z"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 404 | O fluxo não existe ou é de outro seller. Os dois casos dão 404. | {"error":"not found"} |
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, a loja está em análise de cadastro ou falta o privilégio de ajustes (vendor_settings ou equivalente). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |
Substituir fluxo
Substitui nome, gatilho, configuração e grafo. Não muda o status: um fluxo ativo continua ativo com o novo grafo.
/api/v1/vendor/flows/{id}SellerSubstituir fluxo
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
namestringtrigger_typestringtrigger_configobject{}.graphobjectobrigatórioO desenho do fluxo.
graph.nodesobject[]obrigatórioid, type (trigger, condition, action, exit), config e position (x, y, só para o editor visual).graph.edgesobject[]obrigatórioid, from, to e branch (yes ou no ao sair de uma condição; null nos demais).Exemplo de requisição
curl -X PUT "$BASE_URL/api/v1/vendor/flows/52cb85db-b3fd-4683-b9db-efd8b6940c96" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Avisar pedido muito grande", "trigger_type": "order.created", "graph": {"nodes": [{"id": "n_trigger", "type": "trigger", "config": {}, "position": {"x": 240, "y": 40}}, {"id": "n_cond", "type": "condition", "config": {"field": "order.total", "op": "gte", "value": 100000}, "position": {"x": 240, "y": 180}}, {"id": "n_action", "type": "action", "config": {"kind": "notify_inbox", "params": {"title": "Pedido grande", "body": "Chegou um pedido acima de R$ 1.000,00"}}, "position": {"x": 120, "y": 320}}, {"id": "n_exit", "type": "exit", "config": {}, "position": {"x": 240, "y": 440}}], "edges": [{"id": "e1", "from": "n_trigger", "to": "n_cond", "branch": null}, {"id": "e2", "from": "n_cond", "to": "n_action", "branch": "yes"}, {"id": "e3", "from": "n_cond", "to": "n_exit", "branch": "no"}, {"id": "e4", "from": "n_action", "to": "n_exit", "branch": null}]}}'Resposta
{
"id": "52cb85db-b3fd-4683-b9db-efd8b6940c96",
"name": "Avisar pedido muito grande",
"status": "draft",
"trigger_type": "order.created",
"trigger_config": {},
"graph": {
"nodes": [
{
"id": "n_trigger",
"type": "trigger",
"config": {},
"position": {
"x": 240,
"y": 40
}
},
{
"id": "n_cond",
"type": "condition",
"config": {
"field": "order.total",
"op": "gte",
"value": 100000
},
"position": {
"x": 240,
"y": 180
}
},
{
"id": "n_action",
"type": "action",
"config": {
"kind": "notify_inbox",
"params": {
"title": "Pedido grande",
"body": "Chegou um pedido acima de R$ 1.000,00"
}
},
"position": {
"x": 120,
"y": 320
}
},
{
"id": "n_exit",
"type": "exit",
"config": {},
"position": {
"x": 240,
"y": 440
}
}
],
"edges": [
{
"id": "e1",
"from": "n_trigger",
"to": "n_cond",
"branch": null
},
{
"id": "e2",
"from": "n_cond",
"to": "n_action",
"branch": "yes"
},
{
"id": "e3",
"from": "n_cond",
"to": "n_exit",
"branch": "no"
},
{
"id": "e4",
"from": "n_action",
"to": "n_exit",
"branch": null
}
]
},
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"runs_7d": 0,
"failed_7d": 0,
"created_at": "2026-10-11T22:20:00Z",
"updated_at": "2026-10-11T22:20:00Z"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 404 | O fluxo não existe ou é de outro seller. Os dois casos dão 404. | {"error":"not found"} |
| 400 | Corpo que não é JSON. | {"error":"invalid body"} |
| 422 | Ação fora da lista permitida ao seller. A estrutura do grafo só é conferida em testar e ativar. | {"error":"invalid_graph","invalid_nodes":["n_action"],"reason":"action not allowed for vendor flows"} |
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, a loja está em análise de cadastro ou falta o privilégio de ajustes (vendor_settings ou equivalente). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |
Apagar fluxo
Apaga o fluxo (ele some da listagem e fica pausado). O histórico de execuções deixa de ser alcançável pelas rotas do seller.
/api/v1/vendor/flows/{id}SellerApagar fluxo
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/vendor/flows/52cb85db-b3fd-4683-b9db-efd8b6940c96" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"status": "deleted"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 404 | O fluxo não existe ou é de outro seller. Os dois casos dão 404. | {"error":"not found"} |
| 500 | Falha ao apagar. | {"error":"failed"} |
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, a loja está em análise de cadastro ou falta o privilégio de ajustes (vendor_settings ou equivalente). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |