Appearance
Usuários do Blog
O módulo de usuários do blog permite o gerenciamento de contas independentes da tabela principal de usuários do sistema. Cada blog possui seu próprio conjunto de usuários, garantindo o isolamento de dados através do cabeçalho X-Blog-Id.
Por que usar usuários do blog?
Diferente dos usuários do workspace, os usuários do blog são focados em autoria e gestão de conteúdo. Isso permite que você tenha colaboradores específicos para cada blog sem misturar as credenciais administrativas da plataforma principal.
Autenticação
A autenticação é baseada em tokens Bearer. Para realizar a maioria das operações, você precisará obter um token de acesso.
Login
Autentica um usuário e retorna um token de acesso com validade de 30 dias. Endpoint público: exige apenas o X-Blog-Id.
http
POST /v1/blog/users/public/loginParâmetros do Body
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email | string | Sim | O endereço de e-mail do usuário (máx. 250 caracteres). |
password | string | Sim | A senha da conta (máx. 32 caracteres). |
Exemplo de Requisição
bash
curl -X POST https://api.us.basis.tavares.in/v1/blog/users/public/login \
-H "Content-Type: application/json" \
-H "X-Blog-Id: {blog-id}" \
-d '{
"email": "autor@exemplo.com",
"password": "SenhaForte@123"
}'Respostas
200 OK
Retorna o token de acesso do tipo Bearer.
json
{
"type": "bearer",
"name": "c3369c6e-63b2-4650-adf3-0b5e33bbd7ea",
"token": "{token}",
"abilities": ["*"],
"lastUsedAt": null,
"expiresAt": "2026-04-24T17:51:47.296Z"
}422 Unprocessable Entity
Ocorre quando o e-mail não está cadastrado ou a senha está incorreta.
json
{
"errors": [
{ "message": "Email/Senha inválida" }
]
}Logout
Invalida o token de acesso usado na requisição. Não requer corpo na requisição.
http
POST /v1/blog/users/logoutExemplo de Requisição
bash
curl -X POST https://api.us.basis.tavares.in/v1/blog/users/logout \
-H "Authorization: Bearer {token}" \
-H "X-Blog-Id: {blog-id}"Respostas
204 No Content
Token invalidado com sucesso. A resposta não contém corpo.
Recuperação de Senha
Processo público para usuários que esqueceram suas credenciais.
Esqueci minha senha
Gera um código de redefinição de 7 caracteres e o envia para o e-mail informado. Requer que o blog possua um serviço de e-mail configurado.
http
POST /v1/blog/users/public/forgot-passwordParâmetros do Body
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email | string | Sim | E-mail da conta para recuperação (deve existir no blog). |
Exemplo de Requisição
bash
curl -X POST https://api.us.basis.tavares.in/v1/blog/users/public/forgot-password \
-H "Content-Type: application/json" \
-H "X-Blog-Id: {blog-id}" \
-d '{
"email": "autor@exemplo.com"
}'Respostas
201 Created
Código gerado e enviado por e-mail. A resposta não contém corpo.
422 Unprocessable Entity
Ocorre quando o e-mail não existe no blog ou quando o blog não possui um provedor de e-mail configurado.
json
{
"errors": [
{ "message": "Provedor de email não configurado" }
]
}Redefinir Senha
Utiliza o código recebido por e-mail para definir uma nova senha.
http
POST /v1/blog/users/public/reset-passwordParâmetros do Body
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email | string | Sim | E-mail da conta (deve existir no blog). |
code | string | Sim | Código de 7 caracteres recebido por e-mail (máx. 20 caracteres). |
password | string | Sim | A nova senha (mínimo 8, máximo 32 caracteres). |
Exemplo de Requisição
bash
curl -X POST https://api.us.basis.tavares.in/v1/blog/users/public/reset-password \
-H "Content-Type: application/json" \
-H "X-Blog-Id: {blog-id}" \
-d '{
"email": "autor@exemplo.com",
"code": "gxjc534",
"password": "SenhaForte@123"
}'Respostas
204 No Content
Senha redefinida com sucesso. A resposta não contém corpo.
404 Not Found
Ocorre quando a combinação de e-mail e código não é encontrada.
Gerenciamento de Perfil
Estes endpoints permitem que o usuário autenticado gerencie seus próprios dados.
Obter Dados da Conta
Retorna os detalhes do usuário atualmente autenticado.
http
GET /v1/blog/users/accountExemplo de Requisição
bash
curl -X GET https://api.us.basis.tavares.in/v1/blog/users/account \
-H "Authorization: Bearer {token}" \
-H "X-Blog-Id: {blog-id}"Respostas
200 OK
Retorna o objeto completo do usuário autenticado.
json
{
"id": "6",
"blogImageId": "5",
"firstName": "Maria",
"lastName": "Silva",
"email": "autor@exemplo.com",
"bio": null,
"createdAt": "2026-03-15T14:44:54.362-03:00",
"updatedAt": "2026-03-25T14:58:59.048-03:00",
"facebook": null,
"youtube": null,
"instagram": null,
"tiktok": null,
"wechat": null,
"telegram": null,
"snapchat": null,
"twitterX": "http://x.com/exemplo",
"role": "admin",
"blogImage": {
"id": "5",
"name": "avatar.jpg",
"uri": "https://cdn.exemplo.com/images/1635fe4c-c41f-439b-8dd8-0ab0613d569e.jpg"
}
}Atualizar Perfil
Atualiza as informações pessoais e sociais do usuário autenticado.
http
PUT /v1/blog/users/update-accountParâmetros do Body
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
firstName | string | Sim | Primeiro nome (máx. 100 caracteres). |
lastName | string | Sim | Sobrenome (máx. 100 caracteres). |
email | string | Sim | E-mail (deve ser único no blog, máx. 255 caracteres). |
blogImageId | number | Não | ID da imagem de perfil (deve pertencer ao blog). Aceita null. |
bio | string | Não | Breve biografia do autor (máx. 500 caracteres). Aceita null. |
facebook | string | Não | Link do perfil no Facebook (máx. 255 caracteres). Aceita null. |
youtube | string | Não | Link do canal no YouTube (máx. 255 caracteres). Aceita null. |
instagram | string | Não | Link do perfil no Instagram (máx. 255 caracteres). Aceita null. |
tiktok | string | Não | Link do perfil no TikTok (máx. 255 caracteres). Aceita null. |
wechat | string | Não | Link do perfil no WeChat (máx. 255 caracteres). Aceita null. |
telegram | string | Não | Link do perfil no Telegram (máx. 255 caracteres). Aceita null. |
snapchat | string | Não | Link do perfil no Snapchat (máx. 255 caracteres). Aceita null. |
twitterX | string | Não | Link do perfil no Twitter/X (máx. 255 caracteres). Aceita null. |
Exemplo de Requisição
bash
curl -X PUT https://api.us.basis.tavares.in/v1/blog/users/update-account \
-H "Authorization: Bearer {token}" \
-H "X-Blog-Id: {blog-id}" \
-H "Content-Type: application/json" \
-d '{
"blogImageId": 5,
"firstName": "Maria",
"lastName": "Silva",
"email": "autor@exemplo.com",
"bio": null,
"facebook": null,
"youtube": null,
"instagram": null,
"tiktok": null,
"wechat": null,
"telegram": null,
"snapchat": null,
"twitterX": "http://x.com/exemplo"
}'Respostas
204 No Content
Perfil atualizado com sucesso. A resposta não contém corpo.
Alterar Senha
Altera a senha do usuário logado. Usuários com role admin podem, opcionalmente, alterar a senha de outro usuário do blog informando blogUserId.
http
PATCH /v1/blog/users/change-passwordParâmetros do Body
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
password | string | Sim | Nova senha desejada (mínimo 8, máximo 32 caracteres). |
blogUserId | number | Não | ID de outro usuário do blog. Somente administradores podem usar este campo. |
Exemplo de Requisição
bash
curl -X PATCH https://api.us.basis.tavares.in/v1/blog/users/change-password \
-H "Authorization: Bearer {token}" \
-H "X-Blog-Id: {blog-id}" \
-H "Content-Type: application/json" \
-d '{
"password": "SenhaForte@123"
}'Respostas
204 No Content
Senha alterada com sucesso. A resposta não contém corpo.
Endpoints Administrativos
Restrição de Acesso
Os endpoints de criação, atualização, ativação e remoção exigem que o usuário autenticado possua a role admin. Caso contrário, a API retornará 406 Not Acceptable.
Listar Usuários
Retorna uma lista paginada de todos os usuários do blog.
http
GET /v1/blog/usersParâmetros de Query
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page | number | Não | Número da página (mínimo: 1). |
perPage | number | Não | Itens por página (mínimo: 1, máximo: 100). |
search | string | Não | Filtra por nome ou e-mail (máx. 150 caracteres). |
orderBy | enum | Não | Campo de ordenação: id, firstName, email ou createdAt. |
orderDirection | enum | Não | Direção da ordenação: asc ou desc. |
Exemplo de Requisição
bash
curl -X GET "https://api.us.basis.tavares.in/v1/blog/users?page=1&perPage=25" \
-H "Authorization: Bearer {token}" \
-H "X-Blog-Id: {blog-id}"Respostas
200 OK
Retorna a lista de usuários com os metadados de paginação.
json
{
"meta": {
"currentPage": "1",
"perPage": "25"
},
"data": [
{
"id": "6",
"blogImageId": "5",
"firstName": "Maria",
"lastName": "Silva",
"bio": null,
"isActive": true,
"createdAt": "2026-03-15T17:44:54.362+00:00",
"updatedAt": "2026-03-25T18:11:11.358+00:00",
"facebook": null,
"youtube": null,
"instagram": null,
"tiktok": null,
"wechat": null,
"telegram": null,
"snapchat": null,
"twitterX": "http://x.com/exemplo",
"role": "admin",
"blogImage": {
"id": "5",
"name": "avatar.jpg",
"uri": "https://cdn.exemplo.com/images/1635fe4c-c41f-439b-8dd8-0ab0613d569e.jpg"
}
}
]
}Criar Novo Usuário
Cadastra um novo colaborador no blog.
http
POST /v1/blog/usersParâmetros do Body
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
firstName | string | Sim | Nome do usuário (máx. 100 caracteres). |
lastName | string | Sim | Sobrenome do usuário (máx. 100 caracteres). |
email | string | Sim | E-mail único no blog (máx. 255 caracteres). |
password | string | Sim | Senha inicial (mínimo 8, máximo 32 caracteres). |
role | enum | Sim | admin ou user. |
isActive | boolean | Não | Define se a conta inicia ativa. |
blogImageId | number | Não | ID da imagem de perfil (deve pertencer ao blog). Aceita null. |
bio | string | Não | Breve biografia do autor (máx. 500 caracteres). Aceita null. |
facebook | string | Não | Link do perfil no Facebook. Aceita null. |
youtube | string | Não | Link do canal no YouTube. Aceita null. |
instagram | string | Não | Link do perfil no Instagram. Aceita null. |
tiktok | string | Não | Link do perfil no TikTok. Aceita null. |
wechat | string | Não | Link do perfil no WeChat. Aceita null. |
telegram | string | Não | Link do perfil no Telegram. Aceita null. |
snapchat | string | Não | Link do perfil no Snapchat. Aceita null. |
twitterX | string | Não | Link do perfil no Twitter/X. Aceita null. |
Exemplo de Requisição
bash
curl -X POST https://api.us.basis.tavares.in/v1/blog/users \
-H "Authorization: Bearer {token}" \
-H "X-Blog-Id: {blog-id}" \
-H "Content-Type: application/json" \
-d '{
"firstName": "João",
"lastName": "Santos",
"email": "usuario@exemplo.com",
"password": "SenhaForte@123",
"role": "user",
"isActive": true
}'Respostas
201 Created
Usuário criado com sucesso. A resposta não contém corpo.
422 Unprocessable Entity
Erro de validação nos campos enviados.
json
{
"errors": [
{
"message": "Email já cadastrado",
"rule": "database.unique",
"field": "email"
}
]
}Obter Detalhes de Usuário
Busca os dados completos de um usuário específico pelo ID.
http
GET /v1/blog/users/:idParâmetros de Rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | number | Sim | O ID do usuário. |
Respostas
200 OK
Retorna o objeto completo do usuário (mesma estrutura do endpoint de conta).
404 Not Found
Ocorre quando o usuário não existe ou não pertence ao blog.
Atualizar Usuário
Atualiza os dados de qualquer usuário do blog. Aceita os mesmos campos do cadastro, com a diferença de que password é opcional (envie apenas se quiser redefinir a senha).
http
PUT /v1/blog/users/:idParâmetros de Rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | number | Sim | O ID do usuário a ser atualizado. |
Exemplo de Requisição
bash
curl -X PUT https://api.us.basis.tavares.in/v1/blog/users/6 \
-H "Authorization: Bearer {token}" \
-H "X-Blog-Id: {blog-id}" \
-H "Content-Type: application/json" \
-d '{
"firstName": "Maria",
"lastName": "Silva",
"email": "autor@exemplo.com",
"role": "admin",
"isActive": true
}'Respostas
204 No Content
Usuário atualizado com sucesso. A resposta não contém corpo.
Ativar/Desativar Usuário
Atalho para alterar rapidamente o status de acesso de um usuário.
http
PATCH /v1/blog/users/:id/change-activeParâmetros do Body
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
isActive | boolean | Sim | Novo status da conta. |
Exemplo de Requisição
bash
curl -X PATCH https://api.us.basis.tavares.in/v1/blog/users/6/change-active \
-H "Authorization: Bearer {token}" \
-H "X-Blog-Id: {blog-id}" \
-H "Content-Type: application/json" \
-d '{
"isActive": false
}'Respostas
204 No Content
Status alterado com sucesso. A resposta não contém corpo.
Remover Usuário
Remove permanentemente um usuário (Soft Delete).
http
DELETE /v1/blog/users/:idRespostas
204 No Content
Usuário removido com sucesso. A resposta não contém corpo.
Utilitários
Listagem Simplificada
Retorna uma lista simplificada para preenchimento de componentes de seleção (Dropdowns).
http
GET /v1/blog/users/listParâmetros de Query
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
search | string | Não | Filtra por nome ou e-mail (máx. 150 caracteres). |
orderBy | enum | Não | Campo de ordenação: value ou label. |
orderDirection | enum | Não | Direção da ordenação: asc ou desc. |
Exemplo de Requisição
bash
curl -X GET https://api.us.basis.tavares.in/v1/blog/users/list \
-H "Authorization: Bearer {token}" \
-H "X-Blog-Id: {blog-id}"Respostas
200 OK
Retorna um array de opções no formato value/label.
json
[
{ "value": "6", "label": "autor@exemplo.com" },
{ "value": "5", "label": "usuario@exemplo.com" }
]