Classificação de status
Define quais status de pedido contam como receita e como venda concluída nos cards, e reaplica a regra aos cards existentes.
Os números de receita dos cards dependem de uma decisão de negócio: um pedido "Em espera" já é receita? "Enviado"? "Reembolsado"? Como cada loja tem seus próprios status, a plataforma sugere uma classificação e permite que você a ajuste. Cards de receita herdam essa classificação (status_scope.mode = store_default) e acompanham as mudanças; cards que você congelou (custom) não mudam.
Ver a classificação
/api/v1/admin/dashboards/status-classificationAdminVer a classificação de cada status
Exemplo de requisição (ver)
bash
curl "$BASE_URL/api/v1/admin/dashboards/status-classification" \
-H "Authorization: Bearer $TOKEN"Resposta (ver)
200Classificação
json
{
"statuses": [
{
"code": "failed",
"name": "Failed",
"name_pt": "Pagamento Recusado",
"letter_code": "F",
"type": "cancelled",
"counts_as_revenue": false,
"is_completed_sale": false,
"classified": true,
"source": "ladder",
"reason": "admin.dashboards.statusClassification.reason.canonical_failed"
},
{
"code": "shipped",
"name": "Enviado",
"name_pt": "Enviado",
"letter_code": "S",
"type": "shipped",
"counts_as_revenue": true,
"is_completed_sale": false,
"classified": false,
"source": "ladder",
"reason": "admin.dashboards.statusClassification.reason.unclassified_fail_open"
}
],
"drift": []
}Campos da resposta
statusesarrayTodos os status da loja, com a classificação vigente.
statuses[].codestringCódigo do status.
statuses[].namestringNome.
statuses[].name_ptstringNome em português.
statuses[].letter_codestringLetra guardada nos pedidos.
statuses[].typestringFase do ciclo de vida.
statuses[].counts_as_revenuebooleanSe pedidos neste status somam na receita.
statuses[].is_completed_salebooleanSe contam como venda concluída.
statuses[].classifiedbooleanfalse quando nem a regra automática nem uma decisão sua cobrem o status. Nesse caso counts_as_revenue vem true (na dúvida, conta).statuses[].sourcestringladderuserladder (regra automática) ou user (decisão sua).statuses[].reasonstringChave de tradução do motivo.
statuses[].decided_atstringQuando alguém decidiu. Só em
source: user.statuses[].decided_byuuidQuem decidiu. Só em
source: user.driftarrayStatus criados depois de cards terem sido gravados:
code, store_default_card_ids e custom_card_ids. Lista vazia ou null quando está tudo em dia.Erros (ver)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem o privilégio exigido. | {"error":"insufficient privileges","required":"view_reports"} |
| 500 | Falha inesperada no servidor. | {"error":"failed to ..."} |
Classificar um status
/api/v1/admin/dashboards/status-classification/{code}AdminClassificar um status
Parâmetros de caminho
codestringobrigatórioCódigo do status (
shipped, Paid...).Corpo da requisição
counts_as_revenuebooleanobrigatórioSe o status soma na receita.
is_completed_salebooleanobrigatórioSe conta como venda concluída.
reasonstringMotivo (texto livre, para auditoria).
Exemplo de requisição (classificar)
bash
curl -X PUT "$BASE_URL/api/v1/admin/dashboards/status-classification/on_hold" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"counts_as_revenue": false, "is_completed_sale": false, "reason": "Em espera ainda não é venda"}'Resposta (classificar)
200Classificação gravada
json
{
"message": "classification updated",
"cards_updated": 14
}Campos da resposta
messagestringTexto fixo, em inglês.
cards_updatedintegerCards de receita atualizados (os
store_default). 0 se a reaplicação falhar.Erros (classificar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem o privilégio exigido. | {"error":"insufficient privileges","required":"manage_dashboards"} |
| 400 | Corpo inválido: não é JSON, tem campo desconhecido (a leitura rejeita campos que a API não conhece) ou passa de 1 MB. | {"error":"invalid request body","detail":"json: unknown field \"foo\""} |
| 500 | Falha inesperada no servidor. | {"error":"failed to ..."} |
Reclassificar cards
/api/v1/admin/dashboards/status-classification/reclassifyAdminReaplicar a classificação aos cards
Exemplo de requisição (reclassificar)
bash
curl -X POST "$BASE_URL/api/v1/admin/dashboards/status-classification/reclassify" \
-H "Authorization: Bearer $TOKEN"Resposta (reclassificar)
200Cards atualizados
json
{
"cards_updated": 14
}Campos da resposta
cards_updatedintegerQuantos cards
store_default foram reescritos com a lista atual de status.Erros (reclassificar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem o privilégio exigido. | {"error":"insufficient privileges","required":"manage_dashboards"} |
| 500 | Falha inesperada no servidor. | {"error":"failed to ..."} |