Abas: duplicar e restaurar
Duplica uma aba com todos os cards, define a aba padrão e restaura a aba de fábrica ao estado original.
Três ações sobre uma aba inteira. Duplicar é o jeito de "editar" a aba de fábrica ou de copiar a aba de um colega: a cópia é sua, privada, e traz todos os cards ativos. Definir como padrão escolhe a aba que abre primeiro. Restaurar recria a aba de fábrica com os cards originais, caso tenham sido apagados ou alterados. As três exigem manage_dashboards.
Duplicar
/api/v1/admin/dashboards/{id}/duplicateAdminDuplicar uma aba
Parâmetros de caminho
iduuidobrigatórioId da aba (UUID).
Exemplo de requisição (duplicar)
bash
curl -X POST "$BASE_URL/api/v1/admin/dashboards/56a570ca-f6a1-4483-ba89-55bcea0b5c4a/duplicate" \
-H "Authorization: Bearer $TOKEN"Resposta (duplicar)
201Cópia criada
json
{
"id": "8da0f9c1-b05b-4809-b07d-0b36573489e7",
"slug": "94df13c8-4cef-4194-ac6c-ad456986d289",
"name": "Dashboard (cópia)",
"panel": "A",
"owner_user_id": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc",
"visibility": "P",
"is_system": false,
"is_default": false,
"position": 0,
"icon": "chart",
"color": "#0044FF",
"default_period": { "mode": "preset", "preset": "last7" },
"created_at": "2026-10-11T21:10:37.137115Z",
"updated_at": "2026-10-11T21:10:37.137115Z",
"version": 1791753037137,
"is_owner": false,
"kind": "normal"
}Campos da resposta
(objeto)objectA aba nova: não é de fábrica, é privada, pertence a quem duplicou e o nome ganha o sufixo
(cópia). Os cards ativos são copiados.Erros (duplicar)
| 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"} |
| 404 | A aba não existe, não é sua ou não está visível para você. A API responde 404 em vez de 403 para não revelar que o id existe. | {"error":"dashboard not found"} |
| 500 | Falha inesperada no servidor. | {"error":"failed to ..."} |
Definir como padrão
/api/v1/admin/dashboards/{id}/set-defaultAdminDefinir a aba padrão
Parâmetros de caminho
iduuidobrigatórioId da aba (UUID).
Exemplo de requisição (padrão)
bash
curl -X POST "$BASE_URL/api/v1/admin/dashboards/8da0f9c1-b05b-4809-b07d-0b36573489e7/set-default" \
-H "Authorization: Bearer $TOKEN"Resposta (padrão)
200Aba padrão definida
json
{
"id": "8da0f9c1-b05b-4809-b07d-0b36573489e7",
"slug": "94df13c8-4cef-4194-ac6c-ad456986d289",
"name": "Vendas da semana",
"panel": "A",
"owner_user_id": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc",
"visibility": "P",
"is_system": false,
"is_default": true,
"position": 0,
"icon": "chart",
"color": "#0044FF",
"default_period": { "mode": "preset", "preset": "last7" },
"created_at": "2026-10-11T21:10:37.137115Z",
"updated_at": "2026-10-11T21:10:37.137115Z",
"version": 1791753037137,
"is_owner": false,
"kind": "normal"
}Campos da resposta
(objeto)objectA aba, agora com
is_default: true. Só existe uma aba padrão por painel: a anterior perde a marca na mesma operação.Erros (padrão)
| 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"} |
| 404 | A aba não existe, não é sua ou não está visível para você. A API responde 404 em vez de 403 para não revelar que o id existe. | {"error":"dashboard not found"} |
| 500 | Falha inesperada no servidor. | {"error":"failed to ..."} |
Restaurar fábrica
/api/v1/admin/dashboards/{id}/restore-defaultAdminRestaurar a aba de fábrica
Parâmetros de caminho
iduuidobrigatórioId da aba (UUID).
Exemplo de requisição (restaurar)
bash
curl -X POST "$BASE_URL/api/v1/admin/dashboards/56a570ca-f6a1-4483-ba89-55bcea0b5c4a/restore-default" \
-H "Authorization: Bearer $TOKEN"Resposta (restaurar)
200Restaurada
json
{
"cards_created": 3,
"skipped": []
}200Restauração parcial
json
{
"cards_created": 2,
"skipped": ["Segmentos RFM"],
"partial_failure": true,
"message": "estes cartões não foram restaurados: Segmentos RFM"
}Campos da resposta
cards_createdintegerCards recriados.
skippedarrayTítulos dos cards que não puderam ser recriados.
partial_failurebooleanPresente e
true quando algum card foi pulado. Um 200 não garante que tudo voltou: confira skipped.messagestringTexto em português do servidor listando os cards pulados.
Erros (restaurar)
| 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"} |
| 404 | A aba não existe, não é sua ou não está visível para você. A API responde 404 em vez de 403 para não revelar que o id existe. | {"error":"dashboard not found"} |
| 400 | A aba não é a de fábrica. | {"error":"restore_default_not_system","detail":"dashboards: restore-default only applies to an is_system dashboard: ..."} |
| 500 | Falha inesperada no servidor. | {"error":"failed to ..."} |