Skip to content

Projeto de uma API de bank, criado no curso Cubos Academy

License

Notifications You must be signed in to change notification settings

marcelocassar/ApiBank

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Api-Bank - Back-end

API de sistema bancário

Neste projeto foi desenvolvido um sistema bancário foram utilizadas as seguintes tecnologias:

  • Node JS
  • Express
  • Nodemon
  • Api REST

O sistema permite:

  • Criar conta bancária
  • Listar contas bancárias
  • Atualizar os dados do usuário da conta bancária
  • Excluir uma conta bancária
  • Depósitar em uma conta bancária
  • Sacar de uma conta bancária
  • Transferir valores entre contas bancárias
  • Consultar saldo da conta bancária
  • Emitir extrato bancário

Persistências dos dados

Os dados serão persistidos em memória, no objeto existente dentro do arquivo bancodedados.js. Todas as transações e contas bancárias deverão ser inseridas dentro deste objeto, seguindo a estrutura que já existe.

Endpoints

Listar contas bancárias

GET /contas?senha_banco=Cubos123Bank

Exemplo de resposta

// HTTP Status 200 / 201 / 204
// 2 contas encontradas
[
    {
        "numero": "1",
        "saldo": 0,
        "usuario": {
            "nome": "Foo Bar",
            "cpf": "00011122233",
            "data_nascimento": "2021-03-15",
            "telefone": "71999998888",
            "email": "foo@bar.com",
            "senha": "1234"
        }
    },
    {
        "numero": "2",
        "saldo": 1000,
        "usuario": {
            "nome": "Foo Bar 2",
            "cpf": "00011122234",
            "data_nascimento": "2021-03-15",
            "telefone": "71999998888",
            "email": "foo@bar2.com",
            "senha": "12345"
        }
    }
]

// nenhuma conta encontrada
[]
// HTTP Status 400 / 401 / 403 / 404
{
    "mensagem": "A senha do banco informada é inválida!"
}

Criar conta bancária

POST /contas

  • Requisição - O corpo (body) deverá possuir um objeto com as seguintes propriedades (respeitando estes nomes):

    • nome
    • cpf
    • data_nascimento
    • telefone
    • email
    • senha
  • Resposta

    Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
    Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.

Exemplo de Requisição

// POST /contas
{
    "nome": "Foo Bar 2",
    "cpf": "00011122234",
    "data_nascimento": "2021-03-15",
    "telefone": "71999998888",
    "email": "foo@bar2.com",
    "senha": "12345"
}

Exemplo de Resposta

// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
    "mensagem": "Já existe uma conta com o cpf ou e-mail informado!"
}

Atualizar usuário da conta bancária

PUT /contas/:numeroConta/usuario

  • Requisição - O corpo (body) deverá possuir um objeto com todas as seguintes propriedades (respeitando estes nomes):

    • nome
    • cpf
    • data_nascimento
    • telefone
    • email
    • senha
  • Resposta

    Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
    Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.

Exemplo de Requisição

// PUT /contas/:numeroConta/usuario
{
    "nome": "Foo Bar 3",
    "cpf": "99911122234",
    "data_nascimento": "2021-03-15",
    "telefone": "71999998888",
    "email": "foo@bar3.com",
    "senha": "12345"
{

Exemplo de Resposta

// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
    "mensagem": "O CPF informado já existe cadastrado!"
}

Excluir Conta

DELETE /contas/:numeroConta

  • Requisição

    • Numero da conta bancária (passado como parâmetro na rota)
  • Resposta

    Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
    Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.

Exemplo de Resposta

// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
    "mensagem": "A conta só pode ser removida se o saldo for zero!"
}

Depositar

POST /transacoes/depositar

  • Requisição - O corpo (body) deverá possuir um objeto com as seguintes propriedades (respeitando estes nomes):

    • numero_conta
    • valor
  • Resposta

    Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
    Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.

Exemplo de Requisição

// POST /transacoes/depositar
{
	"numero_conta": "1",
	"valor": 1900
}

Exemplo de Resposta

// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
    "mensagem": "O número da conta e o valor são obrigatórios!"
}

Exemplo do registro de um depósito

{
    "data": "2021-08-10 23:40:35",
    "numero_conta": "1",
    "valor": 10000
}

Sacar

POST /transacoes/sacar

  • Requisição - O corpo (body) deverá possuir um objeto com as seguintes propriedades (respeitando estes nomes):

    • numero_conta
    • valor
    • senha
  • Resposta

    Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
    Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.

Exemplo de Requisição

// POST /transacoes/sacar
{
	"numero_conta": "1",
	"valor": 1900,
    "senha": "123456"
}

Exemplo de Resposta

// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
    "mensagem": "O valor não pode ser menor que zero!"
}

Exemplo do registro de um saque

{
    "data": "2021-08-10 23:40:35",
    "numero_conta": "1",
    "valor": 10000
}

Tranferir

POST /transacoes/transferir

  • Requisição - O corpo (body) deverá possuir um objeto com as seguintes propriedades (respeitando estes nomes):

    • numero_conta_origem
    • numero_conta_destino
    • valor
    • senha
  • Resposta

    Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
    Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.

Exemplo de Requisição

// POST /transacoes/transferir
{
	"numero_conta_origem": "1",
	"numero_conta_destino": "2",
	"valor": 200,
	"senha": "123456"
}

Exemplo de Resposta

// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
    "mensagem": "Saldo insuficiente!"
}

Exemplo do registro de uma transferência

{
    "data": "2021-08-10 23:40:35",
    "numero_conta_origem": "1",
    "numero_conta_destino": "2",
    "valor": 10000
}

Saldo

GET /contas/saldo?numero_conta=123&senha=123

  • Requisição - query params

    • numero_conta
    • senha
  • Resposta

    • Saldo da conta

Exemplo de Resposta

// HTTP Status 200 / 201 / 204
{
    "saldo": 13000
}
// HTTP Status 400 / 401 / 403 / 404
{
    "mensagem": "Conta bancária não encontada!"
}

Extrato

GET /contas/extrato?numero_conta=123&senha=123

  • Requisição - query params

    • numero_conta
    • senha
  • Resposta

    • Relatório da conta

Exemplo de Resposta

// HTTP Status 200 / 201 / 204
{
  "depositos": [
    {
      "data": "2021-08-18 20:46:03",
      "numero_conta": "1",
      "valor": 10000
    },
    {
      "data": "2021-08-18 20:46:06",
      "numero_conta": "1",
      "valor": 10000
    }
  ],
  "saques": [
    {
      "data": "2021-08-18 20:46:18",
      "numero_conta": "1",
      "valor": 1000
    }
  ],
  "transferenciasEnviadas": [
    {
      "data": "2021-08-18 20:47:10",
      "numero_conta_origem": "1",
      "numero_conta_destino": "2",
      "valor": 5000
    }
  ],
  "transferenciasRecebidas": [
    {
      "data": "2021-08-18 20:47:24",
      "numero_conta_origem": "2",
      "numero_conta_destino": "1",
      "valor": 2000
    },
    {
      "data": "2021-08-18 20:47:26",
      "numero_conta_origem": "2",
      "numero_conta_destino": "1",
      "valor": 2000
    }
  ]
}
// HTTP Status 400 / 401 / 403 / 404
{
    "mensagem": "Conta bancária não encontada!"
}
tags: back-end módulo 2 nodeJS API REST desafio

About

Projeto de uma API de bank, criado no curso Cubos Academy

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published