{ "get": { "tags": ["Loan Charges"], "summary": "Get all loan charges with optional filtering", "description": "Retrieve loan charges with various filter options including loan ID, charge code, etc.", "operationId": "getLoanCharges", "parameters": [ { "name": "loan_id", "in": "query", "description": "Filter by loan ID", "required": false, "schema": { "type": "integer" }, "example": 7463 }, { "name": "transaction_id", "in": "query", "description": "Filter by transaction ID", "required": false, "schema": { "type": "string" }, "example": "TRX789" }, { "name": "code", "in": "query", "description": "Filter by charge code", "required": false, "schema": { "type": "string" }, "example": "INTEREST" }, { "name": "start_date", "in": "query", "description": "Filter by start date (ISO format)", "required": false, "schema": { "type": "string", "format": "date-time" }, "example": "2023-01-01T00:00:00Z" }, { "name": "end_date", "in": "query", "description": "Filter by end date (ISO format)", "required": false, "schema": { "type": "string", "format": "date-time" }, "example": "2023-12-31T23:59:59Z" }, { "name": "due_before", "in": "query", "description": "Filter charges due before this date (ISO format)", "required": false, "schema": { "type": "string", "format": "date-time" }, "example": "2023-12-31T23:59:59Z" }, { "name": "due_after", "in": "query", "description": "Filter charges due after this date (ISO format)", "required": false, "schema": { "type": "string", "format": "date-time" }, "example": "2023-01-01T00:00:00Z" }, { "name": "page", "in": "query", "description": "Page number for pagination", "required": false, "schema": { "type": "integer", "default": 1, "minimum": 1 }, "example": 1 }, { "name": "limit", "in": "query", "description": "Number of items per page (max 100)", "required": false, "schema": { "type": "integer", "default": 20, "minimum": 1, "maximum": 100 }, "example": 20 } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "../schemas/LoanChargesResponse.json" } } } }, "400": { "description": "Invalid request" }, "500": { "description": "Internal server error" } } } }