API de um Bankline com cadastro de usuário, plano de contas e lançamentos. Também é possível visualizar os lançamentos de determinado usuário através do dashboard. O usuário é autenticado por JWT e os endpoints protegidos pelo Spring Security com exceção do endpoint de criação de usuário. Este projeto foi proposto como desafio final da Academia Accenture promovido pela parceria entre Gama Academy e Accenture. Foi utilizado as tecnologias Spring Boot, H2, Spring Security, JWT e Swagger.
A documentação da API pode ser acessada em https://bankline-gamaacademy.herokuapp.com/swagger-ui.html
- Murilo Sérgio Rodrigues Júnior: Realizou a construção da estrutura inicial com entidades, controllers e repositories, a codificação da parte relacionada a Lançamentos, configuração do Swagger e deploy no Heroku.
- Vivian Tanaka: Realizou a codificação das partes relacionadas ao Usuário, Contas, Dashboard, ajustes em Lançamentos e Segurança Spring Security e JWT.
POST /usuarios
Ao criar um novo usuário é criado automatomaticamente duas contas (conta de débito e conta de crédito) e três planos de conta padrão (DESPESA PADRÃO, RECEITA PADRÃO e TRANSFERENCIA PADRÃO).
Paramêtros do body em JSON:
- nome: String
- login: String
- cpf: String
- senha: String
GET /usuarios/{id}
Parâmetro de caminho (PathVariable):
- id: Integer
GET /usuarios/contas/{login}
Parâmetro de caminho (PathVariable):
- login: String
POST /lancamentos
Ao criar um novo lançamento, o saldo da(s) conta(s) envolvida(s) são atualizadas para refletir o tipo movimento do lançamento. Parâmetros do body JSON:
- data: Date em formato yyyy-MM-dd
- conta: Integer
- descricao: String
- planoConta: Integer
- valor: Double
POST /lancamentos/planos-conta
Parâmetros do body JSON:
- descricao: String
- login: String
- padrao: Boolean
- tipoMovimento: Integer
GET /lancamentos/planos-conta/{login}
Parâmetro de caminho (PathVariable):
- login: String
GET /dashboard?login={login}&dataInicial={dataInicial}&dataFinal={dataFinal}
É obrigatório informar o período e login. Parâmetros de query (RequestParam):
- login: String
- dataInicial: Data em String em formato yyyy-MM-dd
- dataFinal: Data em String em formato yyyy-MM-dd
POST /login
Parâmetros do body JSON:
- login: String
- senha: String