API Contract for Report process for 3DS (Wibmo transactions) 1. Endpoint for file upload: - POST /api/v1/reports Request body: file. { "file": multipart } Status:201 Response body: { "id": 1, "fileName": "AcsReport_20250423150204_8752 1.csv", "status": "NEW", "createdBy": "Stella.ajiboye", "retryCount": 0, "createdAt": "2025-05-06T12:14:30.1379963", "processedAt": null, "lastModifiedBy": "Stella", "lastModifiedAt": "2025-05-06T12:14:30.1385121" } 2. Endpoint for downloading uploaded reports - GET /api/v1/reports/{id}/download Response body: { Either we use the response code or we return a string signifying successful download } 3. Endpoint to get all reports - GET /api/v1/reports Request body { "startDate": "2025-05-06T00:00:00", "endDate": "2025-05-06T23:59:59" } Response body: { "content": [ { "id": 1, "fileName": "AcsReport_20250423150204_8752 1.csv", "status": "NEW", "createdBy": "Stella", "retryCount": 0, "createdAt": "2025-05-06T12:14:30.137", "processedAt": null, "lastModifiedBy": "Stella", "lastModifiedAt": "2025-05-06T12:14:30.14" } ], "pageable": { "pageNumber": 0, "pageSize": 20, "sort": { "empty": true, "sorted": false, "unsorted": true }, "offset": 0, "paged": true, "unpaged": false }, "last": true, "totalElements": 1, "totalPages": 1, "size": 20, "number": 0, "sort": { "empty": true, "sorted": false, "unsorted": true }, "numberOfElements": 1, "first": true, "empty": false }