Skip to content

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/login

Parâmetros do Body ​

NomeTipoObrigatórioDescrição
emailstringSimO endereço de e-mail do usuário (máx. 250 caracteres).
passwordstringSimA 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/logout

Exemplo 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-password

Parâmetros do Body ​

NomeTipoObrigatórioDescrição
emailstringSimE-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-password

Parâmetros do Body ​

NomeTipoObrigatórioDescrição
emailstringSimE-mail da conta (deve existir no blog).
codestringSimCódigo de 7 caracteres recebido por e-mail (máx. 20 caracteres).
passwordstringSimA 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/account

Exemplo 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-account

Parâmetros do Body ​

NomeTipoObrigatórioDescrição
firstNamestringSimPrimeiro nome (máx. 100 caracteres).
lastNamestringSimSobrenome (máx. 100 caracteres).
emailstringSimE-mail (deve ser único no blog, máx. 255 caracteres).
blogImageIdnumberNãoID da imagem de perfil (deve pertencer ao blog). Aceita null.
biostringNãoBreve biografia do autor (máx. 500 caracteres). Aceita null.
facebookstringNãoLink do perfil no Facebook (máx. 255 caracteres). Aceita null.
youtubestringNãoLink do canal no YouTube (máx. 255 caracteres). Aceita null.
instagramstringNãoLink do perfil no Instagram (máx. 255 caracteres). Aceita null.
tiktokstringNãoLink do perfil no TikTok (máx. 255 caracteres). Aceita null.
wechatstringNãoLink do perfil no WeChat (máx. 255 caracteres). Aceita null.
telegramstringNãoLink do perfil no Telegram (máx. 255 caracteres). Aceita null.
snapchatstringNãoLink do perfil no Snapchat (máx. 255 caracteres). Aceita null.
twitterXstringNãoLink 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-password

Parâmetros do Body ​

NomeTipoObrigatórioDescrição
passwordstringSimNova senha desejada (mínimo 8, máximo 32 caracteres).
blogUserIdnumberNãoID 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/users

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
pagenumberNãoNúmero da página (mínimo: 1).
perPagenumberNãoItens por página (mínimo: 1, máximo: 100).
searchstringNãoFiltra por nome ou e-mail (máx. 150 caracteres).
orderByenumNãoCampo de ordenação: id, firstName, email ou createdAt.
orderDirectionenumNãoDireçã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/users

Parâmetros do Body ​

NomeTipoObrigatórioDescrição
firstNamestringSimNome do usuário (máx. 100 caracteres).
lastNamestringSimSobrenome do usuário (máx. 100 caracteres).
emailstringSimE-mail único no blog (máx. 255 caracteres).
passwordstringSimSenha inicial (mínimo 8, máximo 32 caracteres).
roleenumSimadmin ou user.
isActivebooleanNãoDefine se a conta inicia ativa.
blogImageIdnumberNãoID da imagem de perfil (deve pertencer ao blog). Aceita null.
biostringNãoBreve biografia do autor (máx. 500 caracteres). Aceita null.
facebookstringNãoLink do perfil no Facebook. Aceita null.
youtubestringNãoLink do canal no YouTube. Aceita null.
instagramstringNãoLink do perfil no Instagram. Aceita null.
tiktokstringNãoLink do perfil no TikTok. Aceita null.
wechatstringNãoLink do perfil no WeChat. Aceita null.
telegramstringNãoLink do perfil no Telegram. Aceita null.
snapchatstringNãoLink do perfil no Snapchat. Aceita null.
twitterXstringNãoLink 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/:id

Parâmetros de Rota ​

NomeTipoObrigatórioDescrição
idnumberSimO 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/:id

Parâmetros de Rota ​

NomeTipoObrigatórioDescrição
idnumberSimO 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-active

Parâmetros do Body ​

NomeTipoObrigatórioDescrição
isActivebooleanSimNovo 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/:id

Respostas ​

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/list

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
searchstringNãoFiltra por nome ou e-mail (máx. 150 caracteres).
orderByenumNãoCampo de ordenação: value ou label.
orderDirectionenumNãoDireçã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" }
]