/api_xp

Repositório destinado ao Desafio Técnico de Back-End da XP Inc.

Primary LanguageTypeScript

API NODE

Esta API simula um ambiente de uma corretora de investimentos;

O cliente cadastrado poderá realizar depósitos, saques, compra e venda de ações;

Objetivo

Por meio desta API um cliente poderá realizar seu cadastro

Ao fazer o login utilizando o código do cliente e a senha, o cliente poderá fazer operações como:

  • Consultar o próprio saldo
  • Realizar depósito e saque
  • Consultar a lista de ações cadastradas
  • Realizar compra e venda de ações;
  • Consultar o Saldo de Investimentos;

Documentação

A documentação de uso da API, indicando o caminho das rotas, e as entradas esperadas, pode ser consultada neste link abaixo.

DEPLOY NO HEROKU -> https://jorgezup-api-node.herokuapp.com/api-docs/

Documentacao Swagger

Informações para Teste e Uso da API

Esta aplicação utiliza banco de dados PostgreSQL para armazenar as informações.

As variáveis de ambiente podem ser encontradas em .env.example.

Recomendação

É recomendado o uso deste repositório por meio de Docker.

As instruções de instalação e configuração do Docker podem ser encontradas neste link https://docs.docker.com/get-docker/.


Opção sem Docker

Caso tenha optado por utilizar o repositório sem Docker siga as instruções abaixo, após o clone do repositório.

Para instalar as dependências:

npm install

Para executar em modo de desenvolvimento:

npm run dev

** Após a instalação e configuração do Banco de Dados utilizando as variáveis de ambiente **

Execute as migrations para iniciar o Banco de Dados, por meio do comando:

npm migrate:run


Opção com Docker

Caso tenha optado por utilizar o repositório com o Docker siga as instruções abaixo, após o clone do repositório.

Para executar o container em modo de desenvolvimento:

O docker irá iniciar os containers da API (node) e do PostgreSQL, e ficar pronto para o desenvolvimento.

docker compose up

Para executar o container em modo de produção:

docker compose -f docker-compose.prod.yml up -d

Possui alguns dados pré-cadastrados:

Usuário Administrador (o qual pode cadastrar uma nova ação)

codClient -> 308033
accountId -> 1
password -> 999999

Usuário comum

codClient -> 195031
accountId -> 2
password -> 888888

Instruções de Uso


Para criar um novo cliente

Rota: /clientes/criar

Ao acessar esta rota, será possível criar um novo cliente informando os dados como consta na documentação.

Exemplo:

{
 "name":"John",
 "surname":"Doe",
 "email":"john.doe@email.com",
 "password":"888888"
}


Para fazer o login na aplicação

Rota: /clientes/entrar

Será necessário informar o código do cliente e a senha;

{
 "codClient":443808,
 "password":"999999"
}

Ao fazer o login, será enviado como resposta o Token.

{
 "token": 6581e00ebccf5ac6628db47b9487153281dd1d450ad6a064e25c1488cfdc920c24b5d24c5a2695592e73dd581fdf05e30b534087f4002debd8353d91b7959115035051081026f709c2b7e8e7fb752704
}

IMPORTANTE

É necessário informar o Token em todas as requisições;

É necessário informar na requisição das demais rotas o número da conta do cliente (accountId), este número da conta é informado no momento da criação da conta;

O número da conta do cliente (accountId) é diferente do código do cliente (codClient).



Para acessar o saldo do cliente

Rota: /conta/accountId/saldo

Ao acessar esta rota, será possível ver o saldo da conta.

Exemplo:

{
 "codClient": 292053,
 "saldo": 954.24
}


Para realizar um depósito

Rota: /conta/accountId/deposito

Ao acessar esta rota, será possível realizar a operação de depósito.

Exemplo:

{
 "value":1100.89
}


Para realizar um saque

Rota: /conta/accountId/saque

Ao acessar esta rota, será possível realizar a operação de saque.

Exemplo:

{
 "value":298.00
}


Para acessar o saldo dos Investimentos

Rota: /investimentos/accountId/saldo

Ao acessar esta rota, será possível ver o saldo dos investimentos.

Exemplo:

{
 "codStock": 106459,
 "stockname": "PETR4",
 "stocksquantity": "5",
 "avgprice": "29.33"
}


Para realizar a compra de uma ação

Rota: /investimentos/accountId/comprar

Ao acessar esta rota, será possível realizar a operação de compra de uma ação.

Exemplo:

{
 "codStock":106459,
 "quantity":5
}


Para realizar a venda de uma ação

Rota: /investimentos/accountId/vender

Ao acessar esta rota, será possível realizar a operação de venda de uma ação.

Exemplo:

{
 "codStock":106459,
 "quantity":9
}


Para listar as ações disponíveis

Rota: /acoes

Ao acessar esta rota, será possível listar todas as ações cadastradas na corretora com o preço atualizado.

Exemplo:

[
 {
  "codStock": 106459,
  "name": "PETR4",
  "value": 29.33
 }
]


Para cadastrar uma nova ação na corretora

Rota: /acoes

Ao acessar esta rota, será possível cadastrar uma nova ação na corretora.

Somente administradores possuem essa permissão.


API Externa: Foi utilizado a API fornecida pela HG Brasil https://hgbrasil.com/status/finance

Foi utilizado o endpoint do plano gratuito que retorna apenas os dados de uma ação conforme o código informado.

Para informações de uso desta API consulte a documentação.

Exemplo:

{
 "name": "MGLU3"
}


Tecnologias Utilizadas

Para realização deste trabalho foi utilizado as seguintes tecnologias;

  • TypeScript
  • Express
  • TypeORM
  • PostgreSQL
  • Docker
  • Swagger
  • Heroku
  • Github Action

Modelo entidade relacionamento

api_rest_xp - public