{"id":34639002,"url":"https://github.com/levmn/rise-api","last_synced_at":"2026-05-27T10:37:03.740Z","repository":{"id":324824364,"uuid":"1098509528","full_name":"levmn/rise-api","owner":"levmn","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-23T16:20:44.000Z","size":344,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T10:36:50.813Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","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/levmn.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-17T19:32:37.000Z","updated_at":"2025-11-23T16:20:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/levmn/rise-api","commit_stats":null,"previous_names":["levmn/rise-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/levmn/rise-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levmn%2Frise-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levmn%2Frise-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levmn%2Frise-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levmn%2Frise-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/levmn","download_url":"https://codeload.github.com/levmn/rise-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levmn%2Frise-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33562772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2025-12-24T17:14:05.409Z","updated_at":"2026-05-27T10:37:03.722Z","avatar_url":"https://github.com/levmn.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📈 Rise Api\n\n**RiseApi** é a API back-end do projeto Rise, construída para o desafio Global Solution da FIAP, com o tema **\"O Futuro do Trabalho\"**. Projetada para prover endpoints RESTful e gerenciar os recursos principais do sistema (como usuários, currículo com formações acadêmicas, experiências profissionais etc).\n\n### 👥 Integrantes\n- [RM558948] [Allan Brito Moreira](https://github.com/Allanbm100)\n- [RM558868] [Caio Liang](https://github.com/caioliang)\n- [RM98276] [Levi Magni](https://github.com/levmn)\n\n## ⚙️ Requisitos e Configuração\n\n### Pré-requisitos\n\n- .NET 9\n- Acesso a banco Oracle (para migrations/execução)\n\n### Passos para rodar localmente\n\n1. Clone o repositório:\n\n    ```bash\n    git clone https://github.com/levmn/rise-api.git\n    cd rise-api\n    ```\n\n2. Configure variáveis de ambiente:\n\n    ```bash\n    # faça uma copia do arquivo '.env.sample', e renomeie para '.env'\n    # atualize as variáveis com as suas credenciais\n    DB_USER=seu_usuario\n    DB_PASSWORD=sua_senha\n    ```\n\n3. Instale dependências e construa o projeto:\n\n    ```bash\n    dotnet restore\n    dotnet build  \n    ```\n\n4. Execute a API:\n\n    ```bash\n    dotnet run --project src/RiseApi\n    ```\n\n5. Acesse a documentação Swagger:\n\n    ```bash\n    http://localhost:5000/swagger\n    ```\n\n## 🗃️ Entity Framework Core \u0026 Migrations\n\nA **RiseApi** utiliza o **Entity Framework Core** como ORM para realizar o mapeamento objeto-relacional e gerenciar o schema do banco Oracle por meio de *migrations*.\n\n### 📦 Estrutura do EF Core\n\n- O contexto principal está localizado em:\n\n  ```\n  src/RiseApi/Data/AppDbContext.cs\n  ```\n\n- As *migrations* geradas são armazenadas em:\n\n  ```\n  src/RiseApi/Migrations\n  ```\n\n### 🔧 Criando uma nova Migration\n\nAntes de gerar migrations, certifique-se de que as variáveis de ambiente do banco estão configuradas e que o `Oracle.EntityFrameworkCore` está instalado.\n\nPara criar uma nova migration:\n\n```bash\ndotnet ef migrations add NomeDaMigration \\\n  --project src/RiseApi \\\n  --startup-project src/RiseApi \\\n  --output-dir Migrations\n```\n\n### ⬆️ Aplicando as Migrations ao Banco de Dados\n\nPara atualizar o schema do banco de dados com as migrations pendentes:\n\n```bash\ndotnet ef database update \\\n  --project src/RiseApi \\\n  --startup-project src/RiseApi\n```\n\n## 🚦 Versionamento de Rotas (API Versioning)\n\nUtilizamos **versionamento via rotas**, seguindo o padrão REST:\n\n```\n/api/v1/...\n```\n\nEsse padrão permite evoluir a API sem quebrar compatibilidade com clientes antigos.\n\n### 🔧 Configuração\n\nO versionamento está configurado no pipeline da aplicação em:\n\n```\nsrc/RiseApi/Program.cs\n```\n\nCada controller define explicitamente a versão:\n\n```csharp\n[ApiController]\n[ApiVersion(\"1.0\")]\n[Route(\"api/v{version:apiVersion}/[controller]\")]\npublic class UsuarioController : ControllerBase\n{\n}\n```\n\n### ➕ Criando uma nova versão da API\n\nPara adicionar uma nova versão (ex: `v2`):\n\n1. Criar controllers com a nova anotação:\n\n   ```csharp\n   [ApiVersion(\"2.0\")]\n   [Route(\"api/v{version:apiVersion}/[controller]\")]\n   public class UsuarioControllerV2 : ControllerBase { }\n   ```\n\n2. Registrar a versão no `ApiVersioning` dentro do `Program.cs`.\n\n3. Manter todos os endpoints `v1` funcionando até a migração completa dos clientes.\n\n### ✔️ Benefícios\n\n- Permite mudanças sem breaking changes  \n- Oferece múltiplas versões simultaneamente  \n- Facilita o deprecamento controlado de endpoints antigos \n\n## 📜 Documentação da API\n\nA API utiliza **Swagger** para documentar seus endpoints.  \nOs modelos de request e response são definidos via DTOs, com exemplos e descrições.  \nÉ possível testar diretamente pelo Swagger UI quando a aplicação está rodando em ambiente de desenvolvimento (`Development`).\n\n## 🔐 Autenticação \u0026 Autorização\n\n- A API usa **JWT** para autenticar os usuários.  \n- Fluxo típico:\n  1. `POST /auth/login` com credenciais -\u003e retorna token JWT.  \n  2. Usar `Authorization: Bearer \u003ctoken\u003e` nos headers das requisições protegidas.  \n\n## 🩺 Health Check / Saúde da API\n\nA API expõe um endpoint para monitoramento:\n\n    GET /api/v1/health\n\nEsse endpoint pode ser usado para liveness e readiness probes (monitoramento de disponibilidade).\n\n## ✅ Testes\n**Testes de integração**: usam um servidor web e banco de dados de teste ou in-memory para testar os endpoints HTTP.\n\nPara executar todos os testes:\n\n```bash\n# navegue até o diretorio de testes\ncd tests\n# e rode o comando\ndotnet test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flevmn%2Frise-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flevmn%2Frise-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flevmn%2Frise-api/lists"}