# Too Easy Genesis API Routes ## INICIATE THE SERVER cd /home/uriri/Projetos/tooeasy/backend/too-easy-genesis ```bash ./mvnw -DskipTests spring-boot:run ``` ```bash java -jar target/too-easy-trader-genesis-0.0.1-SNAPSHOT.jar --server.port=8080 ``` ## STOP THE SERVER ```bash pkill -f too-easy-trader-genesis-0.0.1-SNAPSHOT.jar ``` Base URL: http://localhost:8080 Set Postman collection variables: - baseUrl = http://localhost:8080 Default headers for protected routes: - Authorization: Bearer {{token}} - Content-Type: application/json ## Register ## POST {{baseUrl}}/auth/register - Body (application/json) — fields from `RegisterDTO` (`src/main/java/com/platform2easy/genesis/web/dto/RegisterDTO.java`): ```json { "name": "John Doe", "email": "john@example.com", "password": "Str0ng!Pass", "phone": "+55 11 99999-9999", "address": "Av. Paulista, 1000", "city": "São Paulo", "state": "SP", "zip": "01310-100", "country": "BR", "kyc": 1, "birthdate": 19900101, "cpf": "123.456.789-00", "companyId": 1, "roleId": 1, "flag": "ACTIVE" } ``` - Response 201 Created: ```json { "token": "" } ``` ## Login #### POST {{baseUrl}}/auth/login - Body — `AuthenticationDTO` (`src/main/java/com/platform2easy/genesis/web/dto/AuthenticationDTO.java`): ```json { "email": "john@example.com", "password": "Str0ng!Pass" } ``` - Response 200 OK: ```json { "token": "" } ``` ## Commodity API (`com.platform2easy.genesis.web.controller.CommodityController`) #### Base path: {{baseUrl}}/api/commodity - GET {{baseUrl}}/api/commodity - List all commodities. - GET {{baseUrl}}/api/commodity/{id} - Path params: id (Long) - POST {{baseUrl}}/api/commodity - Body — entity `Commoditiy` (`domain/model/Commoditiy.java`): ```json { "tipoCommodity": "SACA_GRAOS", "descricao": "Soja", "quantidade": 100, "preco": 125.50, "vencimentoPagamento": "2025-12-31", "dataLimiteEntrega": "2026-01-15", "cedulaProdutoRural": "CPR-123456" } ``` #### - PUT {{baseUrl}}/api/commodity/{id} - Body: same as POST #### - DELETE {{baseUrl}}/api/commodity/{id} Notes: - `tipoCommodity` enum values: see `domain/enums/TipoCommodity.java` (e.g., "SACA_GRAOS"). - Dates use ISO-8601: LocalDate `yyyy-MM-dd`. ## Compra API (`com.platform2easy.genesis.web.controller.CompraController`) #### Base path: {{baseUrl}}/api/compra #### - GET {{baseUrl}}/api/compra #### - GET {{baseUrl}}/api/compra/{id} - Path params: id (Long) #### - POST {{baseUrl}}/api/compra - Body — entity `Compra` with nested `ItemCompra` list: ```json { "fornecedor": "Fornecedor XYZ", "itens": [ { "quantidade": 10, "valor": 35.5, "descricao": "Item A" }, { "quantidade": 5, "valor": 100.0, "descricao": "Item B" } ] } ``` #### - PUT {{baseUrl}}/api/compra/{id} - Body: same as POST #### - DELETE {{baseUrl}}/api/compra/{id} Notes: - `Compra` and `ItemCompra` live in `domain/model/Compra.java` and `domain/model/ItemCompra.java`. - IDs are generated; omit `id` in POST bodies. ## CPR - Emissão (`com.platform2easy.genesis.web.controller.cerc.EmissaoCprController`) #### Base path: {{baseUrl}}/api/cpr/emission #### - GET {{baseUrl}}/api/cpr/emission #### - GET {{baseUrl}}/api/cpr/emission/{id} #### - POST {{baseUrl}}/api/cpr/emission - Body — entity `EmissaoCpr`: ```json { "dataEntrega": "2025-11-01", "localEmissao": "São Paulo", "razaoSocialEmissor": "Empresa Emissora SA", "tipoCpr": "FISICO" } ``` #### - PUT {{baseUrl}}/api/cpr/emission/{id} - Body: same as POST #### - DELETE {{baseUrl}}/api/cpr/emission/{id} Notes: - `tipoCpr` enum values: `FISICO`, `FINANCEIRO` (`domain/model/cerc/TipoCpr.java`). - `dataEntrega` is ISO LocalDate. ## CPR - Contrato de Valor (`com.platform2easy.genesis.web.controller.cerc.ContratoValorCprController`) Base path: {{baseUrl}}/api/cpr/contract #### - GET {{baseUrl}}/api/cpr/contract #### - GET {{baseUrl}}/api/cpr/contract/{id} #### - POST {{baseUrl}}/api/cpr/contract - Body — entity `ContratoValorCpr` (all fields optional except as required by business rules): ```json { "autorizoRegistroEDeclaroQueFoiDadoBaixaNoRegistroEmQuaisquerOutrasIf": true, "codigoContratoOperacaoCredito": "OP123", "codigoContratoScr": "SCR-456", "codigoMoeda": "BRL", "dataBaixaOutraIf": "2025-10-01T10:00:00", "dataContratoSistemaIF": "2025-09-15T09:30:00", "dataRegistroOriginal": "2025-09-01T08:00:00", "dataTransacao": "2025-10-02", "identificacaoPadronizadaOperacaoCredito": "ID-789", "indexacao": "CDI", "naturezaOperacao": "CREDITO_RURAL", "percentualIndexador": 0.12, "quantidadeParcelaContratada": 12, "referenciaExterna": "REF-2025", "taxaJurosOperacao": 0.15, "tipoAtivo": "CPR", "valorFinanciadoContrato": 100000.00, "valorLiquidoCredito": 95000.00, "valorTotalCredito": 110000.00 } ``` #### - PUT {{baseUrl}}/api/cpr/contract/{id} - Body: same as POST #### - DELETE {{baseUrl}}/api/cpr/contract/{id} Notes: - Date/time fields use ISO-8601: LocalDate `yyyy-MM-dd`, LocalDateTime `yyyy-MM-dd'T'HH:mm:ss`. ## CPR - Solicitação de Registro (`com.platform2easy.genesis.web.controller.cerc.SolicitacaoRegistroCprController`) Base path: {{baseUrl}}/api/cpr/register #### - GET {{baseUrl}}/api/cpr/register #### - GET {{baseUrl}}/api/cpr/register/{id} #### - POST {{baseUrl}}/api/cpr/register - Body — entity `SolicitacaoRegistroCpr` (references other entities by id): ```json { "aditivo": "Aditivo 1", "contratoValorCpr": { "id": 1 }, "emissaoCpr": { "id": 1 }, "status": "NOVO" } ``` #### - PUT {{baseUrl}}/api/cpr/register/{id} - Body: same as POST #### - POST {{baseUrl}}/api/cpr/register/{id}/send - Effect: loads record by id and sets `status` to `ACEITO`. #### - DELETE {{baseUrl}}/api/cpr/register/{id} Notes: - `status` enum values: `NOVO`, `ACEITO`, `LIQUIDADO`, `RECUSADO`, `CANCELADO`. ## Quick Postman steps 1. Choose a login: #### - POST `/auth/login` with email/password, OR #### - POST `/authentication/login` with login/password. 2. Copy `token` from response and set Postman variable `token`. 3. Use protected endpoints under `/api/**` with header `Authorization: Bearer {{token}}`.