👤 ClienteController - bbarrosomoreira/digital-bank-api GitHub Wiki

📄 PT-BR | EN-US


🇧🇷 ClienteController – Descrição

Este controller gerencia as operações relacionadas ao cliente do banco digital. Os endpoints aqui definidos permitem que o cliente cadastre seus dados, acesse informações vinculadas ao seu usuário autenticado e que administradores gerenciem clientes cadastrados.


🇺🇸 ClienteController – Description

This controller handles operations related to the digital bank’s clients. The endpoints defined here allow clients to register their data, access information linked to their authenticated user, and enable administrators to manage registered clients.


📥 Endpoints

Método Endpoint Acesso Descrição (PT-BR) Description (EN-US)
POST /clientes CLIENTE Cadastra um cliente vinculado ao usuário logado Registers a client linked to the logged-in user
GET /clientes/me CLIENTE Retorna os dados do cliente logado Returns the logged-in client’s data
GET /clientes ADMIN Retorna todos os clientes do banco Returns all registered clients
GET /clientes/{id_cliente} ADMIN/CLIENTE Retorna cliente por ID (cliente só acessa o próprio) Returns client by ID (client can only access their own)
DELETE /clientes/{id_cliente} ADMIN Exclui um cliente por ID Deletes a client by ID
PUT /clientes/{id_cliente} ADMIN/CLIENTE Atualiza dados do cliente (cliente atualiza apenas os seus) Updates client data (client can update only their own)
PATCH /clientes/{id_cliente} ADMIN/CLIENTE Atualiza parcialmente os dados do cliente Partially updates client data
PATCH /clientes/categoria/{id_cliente} ADMIN Altera a categoria do cliente Changes the client’s category

🔐 Regras de Acesso

  • O cliente logado pode cadastrar e acessar somente suas próprias informações.
  • Apenas administradores (ADMIN) podem acessar a lista completa de clientes e alterar dados de outros usuários.

💡 Observações

  • Evita-se que o admin use os mesmos endpoints de cadastro de cliente para não vincular informações ao seu próprio login.

📌 Exemplos (JSON)

Cadastro de cliente (CLIENTE logado)

Requisição:

POST /clientes
Authorization: Bearer {token}
Content-Type: application/json

{
    "nome": "Gerilda Mariah",
    "cpf": "12345678919",
    "dataNascimento": "16-09-2000",
    "cep": "12345678",
    "numero": 123,
    "complemento": "Apto 101"
}

Resposta:

{
    "id": 1,
    "nome": "Gerilda Mariah",
    "dataNascimento": "16-09-2000",
    "idade": 24,
    "endereco": {
        "rua": "RUA Teste",
        "numero": 123,
        "complemento": "Apto 101",
        "cidade": "Bujari",
        "estado": "AC",
        "cep": "12345678",
        "enderecoPrincipal": true
    },
    "categoria": "Comum"
}