{"id":16112888,"url":"https://github.com/jonathanmdr/survival-api","last_synced_at":"2026-02-18T05:01:55.507Z","repository":{"id":99788293,"uuid":"234466233","full_name":"jonathanmdr/Survival-api","owner":"jonathanmdr","description":"API de gestão de crédito.","archived":false,"fork":false,"pushed_at":"2024-08-26T17:31:04.000Z","size":2596,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-11T12:32:32.509Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","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/jonathanmdr.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":"2020-01-17T03:53:38.000Z","updated_at":"2020-02-09T19:33:58.000Z","dependencies_parsed_at":"2024-10-31T23:24:09.750Z","dependency_job_id":"e2989166-f587-42ba-829b-b7cc703c570a","html_url":"https://github.com/jonathanmdr/Survival-api","commit_stats":{"total_commits":51,"total_committers":2,"mean_commits":25.5,"dds":"0.11764705882352944","last_synced_commit":"06c27d9548048513bd65ebacec6fdaad007d6c6f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jonathanmdr/Survival-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanmdr%2FSurvival-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanmdr%2FSurvival-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanmdr%2FSurvival-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanmdr%2FSurvival-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonathanmdr","download_url":"https://codeload.github.com/jonathanmdr/Survival-api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanmdr%2FSurvival-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29569853,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T04:18:28.490Z","status":"ssl_error","status_checked_at":"2026-02-18T04:13:49.018Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-10-09T20:09:33.011Z","updated_at":"2026-02-18T05:01:55.489Z","avatar_url":"https://github.com/jonathanmdr.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Survival-api\nAPI de gestão de crédito.\n\nA API tem como objetivo disponibilizar os dados armazenados em tempo real à seus consumidores com segurança e assertividade.\n\n## Travis CI\n\n|Branch|Status\n|--|--|\n|master|[![Build Status](https://travis-ci.org/jonathanmdr/Survival-api.svg?branch=master)](https://travis-ci.org/jonathanmdr/Survival-api)\n\n## Tecnologias utilizadas\n[![node](https://img.shields.io/badge/OpenJDK-12.0.2-lightgray.svg)](https://www.java.com/pt_BR/download/)\n[![node](https://img.shields.io/badge/Maven-3.5.4-steelblue.svg)](https://maven.apache.org/download.cgi)\n[![node](https://img.shields.io/badge/Lombok-1.18.8-indianRed.svg)](https://projectlombok.org/)\n[![node](https://img.shields.io/badge/PostgreSQL-42.2.6-blue.svg)](https://www.postgresql.org/download/)\n[![node](https://img.shields.io/badge/Springboot-2.1.7.RELEASE-springgreen.svg)](https://spring.io/)\n[![node](https://img.shields.io/badge/Modelmapper-2.3.0-orange.svg)](http://modelmapper.org/)\n[![node](https://img.shields.io/badge/Swagger-2.9.2-lime.svg)](https://swagger.io/)\n[![node](https://img.shields.io/badge/OAuth2-2.2.5.RELEASE-black.svg)](https://oauth.net/2/)\n[![node](https://img.shields.io/badge/JWT-1.0.9.RELEASE-purple.svg)](https://jwt.io/)\n[![node](https://img.shields.io/badge/Flyway-5.2.4-silver.svg)](https://flywaydb.org/)\n\n\n## Arquitetura cloud \nPara disponibilizar a API em cloud pensando em alta disponibilidade, escalabilidade e segurança optei pela AWS, tendo como base o tráfego de dados sensíveis entre a API e seus consumidores.\n\n - VPC: Virtual Private Cloud\n - RDS: Relational Database Service\n - EC2: Elastic Compute Cloud\n\nA arquitetura é composta de uma VPC juntamente com uma sub-rede privada e uma sub-rede pública, onde na sub-rede privada temos a nossa base de dados postgreSql em um RDS e na sub-rede pública temos os serviços da nossa API em um EC2.\nA nossa base de dados e a nossa API estão dentro do mesmo grupo de segurança, o que nos garante que a comunicação entre ambas ocorra de forma isolada e limitada ao grupo que as mesmas pertencem.\n\n## Cenário da arquitetura\n[![node](https://github.com/jonathanmdr/Survival-api/blob/master/images/arquitetura_cloud.png)](https://github.com/jonathanmdr/Survival-api/blob/master/images)\n\n## Serviços que a API dispõe\nA API dispõe de 3 (três) serviços únicos (Débitos, Score e Eventos).\n\n|Serviço|URL|Retorno|Documentação\n|--|--|--|--|\n|Débitos|http://localhost:8095/serviceA/{cpf}|Retorna os dados da pessoa referente ao CPF informado juntamente com uma listagem de débitos registrados para o mesmo.|http://localhost:8095/swagger-ui.html#/Débitos\n|Score|http://localhost:8095/serviceB/{cpf}|Retorna os dados da pessoa referente ao CPF informado juntamente com uma listagem de bens e fontes de renda.|http://localhost:8095/swagger-ui.html#/Score\n|Eventos|http://localhost:8095/serviceC/{cpf}|Retorna os dados referente aos eventos registrados para o CPF informado|http://localhost:8095/swagger-ui.html#/Eventos\n\nA documentação possui toda a informação referente ao serviço, como por exemplo dados de entrada esperados e o objeto de retorno.\n\n## Configuração do projeto\n\u003e Atenção: para executar a aplicação é necessário ter a base de dados postgreSql devidamente criada e configurada.\n\n1. Criando a base de dados:\n - Caso a base de dados seja criada com nome diferente, servidor remoto ou o serviço esteja executando em uma porta diferente da padrão (5432), siga as instruções sobre o arquivo de propriedades.\n```\nCREATE DATABASE survivalapi\n    WITH \n    OWNER = postgres\n    ENCODING = 'UTF8'\n    CONNECTION LIMIT = -1;\n```\n\n2. Entendendo o arquivo de propriedades de configuração do projeto (`application.properties`):\n```\n# SERVER\n\n• Porta em que a aplicação estará executando\nserver.port=8095\n\n\n# CONNECTION DATABASE\n\n• URL de conexão com a base de dados jdbc:postgresql://{HOST}:{PORT_NUMBER}/{DATABASE_NAME}\nspring.datasource.url=jdbc:postgresql://127.0.0.1:5432/survivalapi\n\n• Usuário de conexão com a base de dados (usuário padrão: postgres)\nspring.datasource.username=postgres\n\n• Senha de conexão com a base de dados (senha padrão: postgres)\nspring.datasource.password=postgres\n\n\n# SECURITY\n\n• Perfis de configuração de segurança da API (oauth-security e basic-security)\nspring.profiles.active=oauth-security\n```\n\n3. Entendendo os perfis de segurança da aplicação:\n - **oauth-security**: Autentica o usuário na aplicação e verifica suas permissões de acesso para cada recurso da API por meio de tokens (Controla nível de acesso).\n - **basic-security**: Autentica o usuário na aplicação (Não controla nível de acesso).\n \n4. Utilizando o perfil `oauth-security`:\n - Veja como autenticar o usuário e fazer uma requisição. \n [![node](https://github.com/jonathanmdr/Survival-api/blob/master/images/oauth.gif)](https://github.com/jonathanmdr/Survival-api/blob/master/images)\n \n5. Utilizando o perfil `basic-security`:\n - Veja como autenticar o usuário e fazer uma requisição.\n [![node](https://github.com/jonathanmdr/Survival-api/blob/master/images/basic.gif)](https://github.com/jonathanmdr/Survival-api/blob/master/images)\n \n6. Usuários e níveis de acesso aos recursos:\n\n|Usuário|Senha|Permissões de acesso\n|--|--|--|\n|admin@survival.com|admin|ROLE_PESQUISAR_DEBITO, ROLE_PESQUISAR_SCORE e ROLE_PESQUISAR_EVENTO\n|convidado@survival.com|convidado|ROLE_PESQUISAR_DEBITO e ROLE_PESQUISAR_SCORE\n\n## Requisições prontas para utilizar em testes\n[Postman - Survival API Documentation](https://documenter.getpostman.com/view/6429490/SWT5jgkj)\n\n## Auditoria\nTodos os serviços são auditados a cada requisição gerando um registro na base de dados com informações para análise.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanmdr%2Fsurvival-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathanmdr%2Fsurvival-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanmdr%2Fsurvival-api/lists"}