Privilégios
Leia e troque os privilégios de um grupo, e entenda quem pode fazer cada coisa no painel de administração.
Um privilégio é uma permissão com nome. Um grupo de administradores (A) ou de seller (V) tem uma lista de privilégios, e quem é membro ativo do grupo ganha todos eles. É assim que a loja decide que o atendente "vê pedidos mas não mexe em preços".
Por convenção, os nomes seguem view_<área> (só lê) e manage_<área> (lê e escreve), como view_orders, manage_orders, manage_users. A lista completa e atual vem de GET /api/v1/admin/privileges (exige manage_usergroups), que devolve, para cada privilégio, privilege (o nome), section_id, group_id, is_view (true para os de leitura) e module_slug (o recurso opcional da loja a que pertence, quando há).
Estas rotas exigem manage_usergroups.
/api/v1/admin/usergroups/{id}/privilegesAdminPrivilégios de um grupo de usuários
Devolve os nomes dos privilégios gravados no grupo.
Path parameters
iduuidobrigatório{ "privileges": ["view_orders", "manage_orders", "view_users"] }Campos da resposta
privilegesarraynull quando o grupo não tem nenhum./api/v1/admin/usergroups/{id}/privilegesAdminSubstitui os privilégios de um grupo de usuários
Substitui a lista inteira: o que não estiver no corpo é removido. Para acrescentar um privilégio, leia a lista, adicione o nome e envie tudo de volta. Lista vazia remove todos.
Duas regras de segurança:
- Grupo de administradores (
A): só o dono da loja (is_root) pode trocar os privilégios. Sem isso, qualquer administrador do grupo poderia se dar qualquer permissão. Outro administrador recebe 403. - Grupo de clientes (
C) não pode ter privilégios. Enviar uma lista não vazia devolve 500 com a explicação. Para zerar, envie lista vazia.
Path parameters
iduuidobrigatórioCorpo da requisição
privilegesarrayobrigatórioGET.Exemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/usergroups/11743c6d-a14f-42a8-9785-a155aff091ba/privileges" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"privileges": ["view_orders", "manage_orders"]}'Resposta
{ "message": "privileges updated" }Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo que não é JSON | {"error":"invalid request body","detail":"..."} |
| 401 | Sem credenciais ou token expirado | {"error":"invalid or expired token"} |
| 403 | Falta manage_usergroups, ou o grupo é de administradores e quem chama não é o dono | {"error":"insufficient privileges","required":"manage_usergroups"} ou {"error":"only the store owner can change administrator privileges","detail":"This group grants administrative access. Ask an owner (root) account to edit it."} |
| 404 | Grupo inexistente (gravar) | {"error":"usergroup not found"} |
| 500 | Grupo de clientes com lista não vazia | {"error":"failed to set group privileges","detail":"usergroup ... is customer-type (type=C) and cannot hold privilege grants; remove all grants or change the group type"} |