Equipe da loja
Lista, adiciona, edita e remove as pessoas que acessam o painel do seller, e os grupos que o dono pode conceder.
A equipe é o conjunto de pessoas que acessam o painel de uma mesma loja. O dono monta a equipe: cria o acesso de um funcionário, escolhe o papel (manager ou member) e concede grupos de usuários, que são o que de fato dá permissões. Qualquer pessoa da equipe com permissão de configuração pode ler a lista; só o dono altera.
/api/v1/vendor/teamSellerListar a equipe da loja
Devolve todas as pessoas com acesso à loja do token, incluindo o dono. is_owner diz se quem chama é o dono, para a interface mostrar ou esconder os botões de edição.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário (veja Tokens).Exemplo de requisição
curl -X GET "$BASE_URL/api/v1/vendor/team" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"members": [
{
"user_id": "2c8c0f6e-5d1a-4b7e-9a3f-6e0d1b4a7c52",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"role": "owner",
"first_name": "Ana",
"last_name": "Lima",
"email": "ana.lima@example.com",
"created_at": "2026-09-14T13:22:05Z",
"status": "A",
"email_verified": true
},
{
"user_id": "9b1f4a52-3c7e-4d0b-8a61-2f5d7c9e0a14",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"role": "manager",
"first_name": "Carlos",
"last_name": "Pereira",
"email": "carlos.pereira@example.com",
"created_at": "2026-09-14T13:22:05Z",
"status": "A",
"email_verified": true
}
],
"is_owner": true
}Campos da resposta
membersobject[]Pessoas da equipe.
members[].user_iduuidmembers[].vendor_iduuidmembers[].rolestringownermanagermembermembers[].first_namestringmembers[].last_namestringmembers[].emailstringmembers[].created_atstringmembers[].statusstringA é ativa.members[].email_verifiedbooleanis_ownerbooleantrue quando quem chama é o dono.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"invalid or expired token"} |
| 403 | Falta ao usuário todos os privilégios de configuração do seller (vendor_settings e afins). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","..."]} |
| 404 | Usuário sem seller vinculado. | {"error":"vendor_not_found"} |
| 500 | Falha ao listar. | {"error":"list_team_failed","detail":"..."} |
/api/v1/vendor/team/usergroupsSellerListar grupos que o dono pode conceder
Devolve os grupos de usuários de seller que a plataforma liberou para o dono conceder à equipe. É a lista exata que usergroup_ids aceita; qualquer outro id é recusado.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário (veja Tokens).Exemplo de requisição
curl -X GET "$BASE_URL/api/v1/vendor/team/usergroups" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"usergroups": [
{
"id": "5a0e6d3c-1b2f-4c84-9d17-7e3a8f2b6c90",
"name": "Operador de pedidos",
"description": "Acompanha e despacha pedidos",
"type": "V",
"status": "A",
"vendor_manageable": true,
"members_count": 3,
"created_at": "2026-08-02T12:00:00Z",
"updated_at": "2026-08-02T12:00:00Z",
"internal_code": ""
}
],
"total": 1
}Campos da resposta
usergroupsobject[]Grupos disponíveis.
usergroups[].iduuidusergroup_ids.usergroups[].namestringusergroups[].descriptionstringusergroups[].typestringV (seller).usergroups[].statusstringA (ativo).usergroups[].vendor_manageablebooleantrue aqui: o grupo pode ser concedido pelo dono.usergroups[].members_countintegertotalintegerErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"invalid or expired token"} |
| 403 | Falta ao usuário todos os privilégios de configuração do seller (vendor_settings e afins). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","..."]} |
| 404 | Usuário sem seller vinculado. | {"error":"vendor_not_found"} |
| 500 | Falha ao listar os grupos. | {"error":"usergroups_failed","detail":"..."} |
/api/v1/vendor/teamSellerAdicionar pessoa à equipe
Só o dono pode chamar. Cria a conta de seller (ou reaproveita uma existente), vincula à loja com o papel dado e concede os grupos. Os grupos são validados antes de qualquer coisa ser criada: se um deles não for permitido, nada é criado.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário (veja Tokens).Corpo da requisição
emailstringobrigatóriofirst_namestringlast_namestringpasswordstringrolestringpadrão: membermanagermemberowner não pode ser criado por aqui.usergroup_idsuuid[]GET /api/v1/vendor/team/usergroups. Sem nenhum, a pessoa não consegue fazer nada.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/team" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "carlos.pereira@example.com",
"first_name": "Carlos",
"last_name": "Pereira",
"password": "SenhaForte#2026",
"role": "manager",
"usergroup_ids": [
"5a0e6d3c-1b2f-4c84-9d17-7e3a8f2b6c90"
]
}'Resposta
{
"user_id": "9b1f4a52-3c7e-4d0b-8a61-2f5d7c9e0a14",
"members": [
{
"user_id": "9b1f4a52-3c7e-4d0b-8a61-2f5d7c9e0a14",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"role": "manager",
"first_name": "Carlos",
"last_name": "Pereira",
"email": "carlos.pereira@example.com",
"created_at": "2026-09-14T13:22:05Z",
"status": "A",
"email_verified": true
}
]
}Campos da resposta
user_iduuidmembersobject[]Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"invalid or expired token"} |
| 403 | Falta ao usuário todos os privilégios de configuração do seller (vendor_settings e afins). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","..."]} |
| 403 | Quem chama não é o dono. | {"error":"owner_only","detail":"only the store owner can manage administrators"} |
| 403 | Algum usergroup_ids não pode ser concedido por esta loja. | {"error":"usergroup_not_grantable","detail":"usergroup is not grantable by this vendor"} |
| 400 | email ausente. | {"error":"email_required","detail":"email is required"} |
| 400 | role diferente de manager e member. | {"error":"invalid_role","detail":"role must be 'manager' or 'member'"} |
| 400 | E-mail novo sem password. | {"error":"password_required","detail":"a password is required to create a new vendor administrator"} |
| 409 | O e-mail já pertence a uma conta que não é de seller. | {"error":"email_in_use","detail":"this email already belongs to a non-vendor account"} |
| 400 | Falha ao criar a conta ou vincular à loja (a mensagem de detalhe explica). | {"error":"user_create_failed","detail":"..."} |
/api/v1/vendor/team/{userId}SellerEditar membro da equipe
Só o dono pode chamar, e só sobre membros da própria loja. Atualiza dados da pessoa, o papel e, opcionalmente, concede grupos. Não promove ninguém a administrador da plataforma e não edita o dono.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário (veja Tokens).Parâmetros de caminho
userIduuidobrigatóriouser_id da listagem).Corpo da requisição
first_namestringlast_namestringemailstringphonestringstatusstringlanguagestringrolestringmanagermemberusergroup_idsuuid[]Os campos de cadastro do usuário não listados aqui (moeda, fuso, comunicação, etc.) também são aceitos e seguem as regras da edição de usuários. user_type e is_root são sempre ignorados.
Exemplo de requisição
curl -X PUT "$BASE_URL/api/v1/vendor/team/9b1f4a52-3c7e-4d0b-8a61-2f5d7c9e0a14" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"first_name": "Carlos",
"phone": "+55 11 91234-5678",
"role": "member",
"usergroup_ids": [
"5a0e6d3c-1b2f-4c84-9d17-7e3a8f2b6c90"
]
}'Resposta
{
"user": {
"id": "9b1f4a52-3c7e-4d0b-8a61-2f5d7c9e0a14",
"first_name": "Carlos",
"last_name": "Pereira",
"email": "carlos.pereira@example.com",
"phone": "+55 11 91234-5678",
"user_type": "vendor",
"status": "A"
},
"members": [
{
"user_id": "9b1f4a52-3c7e-4d0b-8a61-2f5d7c9e0a14",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"role": "manager",
"first_name": "Carlos",
"last_name": "Pereira",
"email": "carlos.pereira@example.com",
"created_at": "2026-09-14T13:22:05Z",
"status": "A",
"email_verified": true
}
]
}Campos da resposta
userobjectmembersobject[]Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"invalid or expired token"} |
| 403 | Falta ao usuário todos os privilégios de configuração do seller (vendor_settings e afins). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","..."]} |
| 403 | Quem chama não é o dono. | {"error":"owner_only","detail":"only the store owner can manage administrators"} |
| 403 | O alvo é o dono. | {"error":"cannot_edit_owner","detail":"the store owner is edited from account settings"} |
| 403 | Grupo não concedível por esta loja. | {"error":"usergroup_not_grantable","detail":"usergroup is not grantable by this vendor"} |
| 404 | A pessoa não é da equipe desta loja. | {"error":"not_team_member","detail":"user is not a member of your team"} |
| 400 | E-mail em uso, valor inválido ou role fora de manager e member. | {"error":"email already in use"} |
| 500 | Falha ao atualizar. | {"error":"update_failed","detail":"..."} |
/api/v1/vendor/team/{userId}SellerRemover membro da equipe
Só o dono pode chamar. Tira a pessoa da equipe da loja; a partir daí as rotas do seller recusam o usuário. A conta de login dela não é apagada. O dono não pode ser removido.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário (veja Tokens).Parâmetros de caminho
userIduuidobrigatóriouser_id da listagem).Exemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/vendor/team/9b1f4a52-3c7e-4d0b-8a61-2f5d7c9e0a14" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"removed": true
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"invalid or expired token"} |
| 403 | Falta ao usuário todos os privilégios de configuração do seller (vendor_settings e afins). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","..."]} |
| 403 | Quem chama não é o dono. | {"error":"owner_only","detail":"only the store owner can manage administrators"} |
| 409 | A pessoa é o dono. | {"error":"cannot_remove_owner","detail":"..."} |
| 400 | Falha ao remover (por exemplo, a pessoa não está na equipe). | {"error":"team_remove_failed","detail":"..."} |