{"id":19066350,"url":"https://github.com/rdvid/bank-api","last_synced_at":"2026-04-12T15:54:39.799Z","repository":{"id":156771437,"uuid":"618911030","full_name":"rdvid/Bank-API","owner":"rdvid","description":"Bank API developed with nodejs and postgres","archived":false,"fork":false,"pushed_at":"2023-03-25T17:57:13.000Z","size":61,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-22T03:16:46.016Z","etag":null,"topics":["api","expressjs","javascript","postgresql"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rdvid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-25T17:51:04.000Z","updated_at":"2024-01-26T17:15:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"cd8cfe55-c5b9-4524-973a-604532635390","html_url":"https://github.com/rdvid/Bank-API","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rdvid/Bank-API","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdvid%2FBank-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdvid%2FBank-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdvid%2FBank-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdvid%2FBank-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rdvid","download_url":"https://codeload.github.com/rdvid/Bank-API/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdvid%2FBank-API/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266127236,"owners_count":23880423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","expressjs","javascript","postgresql"],"created_at":"2024-11-09T00:56:07.372Z","updated_at":"2026-04-12T15:54:34.756Z","avatar_url":"https://github.com/rdvid.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Din-Din API\n\nDesafio-Back-end-03-dindin-dbeifood\n\n## Descrição\n\nBem-vindo(a) à documentação da nossa API de gestão financeira Din-Din API. Com esta API, você poderá gerenciar com muito mais conforto a sua vida financeira.\n\nA nossa API foi desenvolvida para simplificar o controle financeiro das pessoas. Com ela, você poderá acompanhar saldos, gerar relatórios de transferências e consultar extratos entre outras funcionalidades.\n\nNossa documentação é abrangente e oferece todas as informações necessárias para você começar a utilizar a API. Ela inclui detalhes sobre os endpoints disponíveis, os parâmetros de entrada e saída, exemplos de código, autenticação e segurança, entre outros.\n\nA documentação também apresenta as melhores práticas para utilização da API e dicas para otimizar o desempenho e a segurança da integração utilizando o padrão REST.\n\nCaso precise de ajuda, nossa equipe de suporte técnico está pronta para ajudá-lo(a) a implementar a API da melhor forma possível.\n\nEstamos animados em tê-lo(a) como nosso(a) cliente e esperamos que a nossa API de gestão financeira seja uma ferramenta valiosa para sua empresa. Obrigado por escolher a nossa plataforma e aproveite ao máximo nossa documentação!\n\nAtenciosamente,\nEquipe de desenvolvimento da Din-Din API.\n\n## Instalação\n\n1. Clone este repositório: `git clone git@github.com:rdvid/desafio-backend-03-dindin-dbeifood.git`\n2. Navegue até a pasta do seu repositório local: `cd desafio-backend-03-dindin-dbeifood`\n3. Instale as dependencias necessárias: `npm install`\n4. Inicialize o projeto no terminal: `npm run dev`\n\n## Como Usar\n\nUma vez rodando, a nossa API pode ser acessada através de requisições HTTP por um cliente local.\n\n### Endpoints\n\nEndpoins disponíveis até o momento:\n\n### **Login do usuário**\n\n- `POST /login`: Essa rota é uma tela de login, ela demanda um objeto no corpo da requisição, contendo \"email\" e \"senha\" (Atenção com a estrutura do objeto, é fundamental que a requisição respeite as nomenclaturas). Esta rota retorna o usuário cadastrado e um Token JWT que pode e deve ser usado para acessar demais rotas referentes as credenciais informadas.\n\n#### **Exemplo de Requisição**\n\n```javascript\n// POST /login\n{\n    \"email\": \"jose@email.com\",\n    \"senha\": \"123456\"\n}\n```\n\n#### **Exemplo de Resposta**\n\n```javascript\n// HTTP Status 200\n{\n    \"usuario\": {\n        \"id\": 1,\n        \"nome\": \"José\",\n        \"email\": \"jose@email.com\"\n    },\n    \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwiaWF0IjoxNjIzMjQ5NjIxLCJleHAiOjE2MjMyNzg0MjF9.KLR9t7m_JQJfpuRv9_8H2-XJ92TSjKhGPxJXVfX6wBI\"\n}\n```\n\n### **Cadastrar usuário**\n\n- `POST /usuario`: Esta rota é uma tela de cadastramento, com ela novos usuários podem se registrar e assim fazer uso da aplicação. Ela recebe um Objeto JSON no corpo da requisição com os campos/propriedades: \"nome\", \"email\" e \"senha\". (não se preocupe, a senha é armazenada de forma segura no banco de dados através de criptografia aplicada):\n\n#### **Examplo de requisição**\n\n```javascript\n// POST /usuario\n{\n    \"nome\": \"José\",\n    \"email\": \"jose@email.com\",\n    \"senha\": \"123456\"\n}\n```\n\n#### **Exemplos de resposta**\n\n```javascript\n// HTTP Status 200 / 201 / 204\n{\n    \"id\": 1,\n    \"nome\": \"José\",\n    \"email\": \"jose@email.com\"\n}\n```\n\n- `PUT /usuario`: Essa rota serve para editar as informações de um usuário já existente dentro da plataforma. \"nome\", \"email\" e \"senha\" novos são necessários nessa operação.\n\n#### **Exemplo de requisição**\n\n```javascript\n// PUT /usuario\n{\n    \"nome\": \"José de Abreu\",\n    \"email\": \"jose_abreu@email.com\",\n    \"senha\": \"j4321\"\n}\n```\n\n#### **Exemplos de resposta**\n\n```javascript\n// HTTP Status 200 / 201 / 204\n// Sem conteúdo no corpo (body) da resposta\n```\n\n### **Listar categorias**\n\n- `GET /categoria`: Essa rota serve para listar todas as categorias de transações registradas até o momento.\n\n#### **Exemplo de requisição**\n\n```javascript\n// GET /categoria\n// Não é necessário enviar nenhum dado para essa operação.\n```\n\n#### **Exemplos de resposta**\n\n```javascript\n// HTTP Status 200 / 201 / 204\n[\n  {\n    id: 1,\n    descricao: \"Roupas\",\n  },\n  {\n    id: 2,\n    descricao: \"Mercado\",\n  },\n];\n```\n\n```javascript\n// HTTP Status 200 / 201 / 204\n[];\n```\n\n### **Listar transações**\n\n- `GET /transacao/`: Essa rota lista todas as transações da conta conectada.\n\n#### **Exemplo de requisição**\n\n```javascript\n// GET /transacao\n// Não é necessário enviar nenhum dado para essa operação.\n```\n\n#### **Exemplos de resposta**\n\n```javascript\n// HTTP Status 200 / 201 / 204\n[\n  {\n    id: 1,\n    tipo: \"saida\",\n    descricao: \"Sapato amarelo\",\n    valor: 15800,\n    data: \"2022-03-23T15:35:00.000Z\",\n    usuario_id: 5,\n    categoria_id: 4,\n    categoria_nome: \"Roupas\",\n  },\n  {\n    id: 3,\n    tipo: \"entrada\",\n    descricao: \"Salário\",\n    valor: 300000,\n    data: \"2022-03-24T15:30:00.000Z\",\n    usuario_id: 5,\n    categoria_id: 6,\n    categoria_nome: \"Salários\",\n  },\n];\n```\n\n```javascript\n// HTTP Status 200 / 201 / 204\n[];\n```\n\n### **Detalhar uma transação do usuário logado**\n\n- `GET /transacao/:id`: Ao especificar o numero de alguma transação na url, é retornado o detalhamento dessa transação.\n\n#### **Exemplo de requisição**\n\n```javascript\n// GET /transacao/2\n// Sem conteúdo no corpo (body) da requisição\n```\n\n#### **Exemplos de resposta**\n\n```javascript\n// HTTP Status 200 / 201 / 204\n{\n    \"id\": 3,\n    \"tipo\": \"entrada\",\n    \"descricao\": \"Salário\",\n    \"valor\": 300000,\n    \"data\": \"2022-03-24T15:30:00.000Z\",\n    \"usuario_id\": 5,\n    \"categoria_id\": 6,\n    \"categoria_nome\": \"Salários\",\n}\n```\n\n### **Registar uma transacao**\n\n- `POST /transacao`: Essa rota serve para registrar uma transação. Para que isso aconteça é necessário que, no corpo da requisição, seja adicionado um objeto JSON contendo \"tipo\", \"descricao\", \"valor\", \"data\", \"id da categoria da transacao\" (Atente-se a forma como as propriedades do JSON são escritas, é necessário respeitar a verbosidade).\n\n#### **Exemplo de requisição**\n\n```javascript\n// POST /transacao\n{\n    \"tipo\": \"entrada\",\n    \"descricao\": \"Salário\",\n    \"valor\": 300000,\n    \"data\": \"2022-03-24T15:30:00.000Z\",\n    \"categoria_id\": 6\n}\n```\n\n#### **Exemplos de resposta**\n\n```javascript\n// HTTP Status 200 / 201 / 204\n{\n    \"id\": 3,\n    \"tipo\": \"entrada\",\n    \"descricao\": \"Salário\",\n    \"valor\": 300000,\n    \"data\": \"2022-03-24T15:30:00.000Z\",\n    \"usuario_id\": 5,\n    \"categoria_id\": 6,\n    \"categoria_nome\": \"Salários\",\n}\n```\n\n### **Atualizar transação do usuário logado**\n\n- `PUT /transacao/:id`: Ao utilizar o metodo PUT em uma transação especificada através de um ID, é possível alterar algumas informações como: \"descricao\", \"valor\", \"data\", \"categoria_id\" e \"tipo\", passados através de um objeto JSON informado no corpo da requisição.\n\n#### **Exemplo de requisição**\n\n```javascript\n// PUT /transacao/2\n{\n\t\"descricao\": \"Sapato amarelo\",\n\t\"valor\": 15800,\n\t\"data\": \"2022-03-23 12:35:00\",\n\t\"categoria_id\": 4,\n\t\"tipo\": \"saida\"\n}\n```\n\n#### **Exemplos de resposta**\n\n```javascript\n// HTTP Status 200 / 201 / 204\n// Sem conteúdo no corpo (body) da resposta\n```\n\n### **Excluir transação do usuário logado**\n\n- `DELETE /transacao/:id`: Essa rota deleta uma transação especifica.\n\n#### **Exemplo de requisição**\n\n```javascript\n// DELETE /transacao/2\n//\n```\n\n#### **Exemplos de resposta**\n\n```javascript\n// HTTP Status 200 / 201 / 204\n// Sem conteúdo no retorno\n```\n\n### **Obter extrato de transações**\n\n- `GET /transacao/extrato`: Ao utilizar a rota de extrato, é retornado um objeto JSOn que informa a totalidade somada dos valores que sairam e que entraram na conta até o momento atual:\n\n#### **Exemplo de requisição**\n\n```javascript\n// DELETE /transacao/extrato\n// Sem conteúdo no corpo (body) da requisição\n```\n\n#### **Exemplos de resposta**\n\n```javascript\n// HTTP Status 200 / 201 / 204\n{\n\t\"entrada\": 300000,\n\t\"saida\": 15800\n}\n```\n\npara utilizar a API, utilize um serviço para requisições HTTP como Axios ou HTTPModule em Angular ou uma aplicação para requisições como [Postman](https://www.postman.com/), [Insomnia](https://insomnia.rest/) or [cURL](https://curl.se/).\n\n## Desenvolvedores\n\n| [\u003cimg src=\"https://avatars.githubusercontent.com/u/65367617\" width=115\u003e\u003cbr\u003e\u003csub\u003eDiego Oliveira\u003c/sub\u003e](https://github.com/1983-diego) | [\u003cimg src=\"https://avatars.githubusercontent.com/u/60834135\" width=115\u003e\u003cbr\u003e\u003csub\u003eRafael David\u003c/sub\u003e](https://github.com/rdvid) |\n| :----------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: |\n\n## Contact\n\nIf you have any questions or suggestions about this project, feel free to contact me through my GitHub profile: [@rdvid](https://github.com/rdvid).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frdvid%2Fbank-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frdvid%2Fbank-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frdvid%2Fbank-api/lists"}