From 3ee973ddaaad98f3ab46cbc61fbd2c5e221dba0f Mon Sep 17 00:00:00 2001 From: Azeez Muibi Date: Mon, 14 Apr 2025 00:13:02 +0100 Subject: [PATCH] update --- app/swagger/digifi_swagger.json | 562 ++++++++++++++++-- app/swagger/paths/Loans.json | 124 ++++ app/swagger/paths/Transactions.json | 82 +++ app/swagger/schemas/LoansResponse.json | 79 +++ app/swagger/schemas/TransactionsResponse.json | 50 ++ 5 files changed, 836 insertions(+), 61 deletions(-) create mode 100644 app/swagger/paths/Loans.json create mode 100644 app/swagger/paths/Transactions.json create mode 100644 app/swagger/schemas/LoansResponse.json create mode 100644 app/swagger/schemas/TransactionsResponse.json diff --git a/app/swagger/digifi_swagger.json b/app/swagger/digifi_swagger.json index 3512375..7e10128 100644 --- a/app/swagger/digifi_swagger.json +++ b/app/swagger/digifi_swagger.json @@ -19,7 +19,7 @@ } ], "tags": [ - { + { "name": "Authorize", "description": "This feature will be used for authorizing customers.", "externalDocs": { @@ -74,83 +74,523 @@ "description": "Find out more", "url": "https://www.simbrellang.net" } + }, + { + "name": "Loans", + "description": "Get all loans with optional filtering.", + "externalDocs": { + "description": "Find out more", + "url": "https://www.simbrellang.net" + } + }, + { + "name": "Transactions", + "description": "Get all transactions with optional filtering.", + "externalDocs": { + "description": "Find out more", + "url": "https://www.simbrellang.net" + } } ], "paths": { "/Authorize": { - "$ref": "swagger/paths/Authorize.json" + "post": { + "tags": [ + "Authorize" + ], + "summary": "Authorize a user", + "description": "Authorize a user with credentials", + "operationId": "authorize", + "requestBody": { + "description": "User credentials", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizeResponse" + } + } + } + }, + "400": { + "description": "Invalid request" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal server error" + } + } + } }, "/AuthorizeRefresh": { - "$ref": "swagger/paths/AuthorizeRefresh.json" + "post": { + "tags": [ + "AuthorizeRefresh" + ], + "summary": "Refresh authorization token", + "description": "Refresh an expired authorization token", + "operationId": "authorizeRefresh", + "requestBody": { + "description": "Refresh token", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizeRefreshRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizeRefreshResponse" + } + } + } + }, + "400": { + "description": "Invalid request" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal server error" + } + } + } }, - "/EligibilityCheck": { - "$ref": "swagger/paths/EligibilityCheck.json" + "/loans": { + "get": { + "tags": [ + "Loans" + ], + "summary": "Get all loans with optional filtering", + "description": "Retrieve loans with various filter options including customer ID, account ID, status, etc.", + "operationId": "getLoans", + "parameters": [ + { + "name": "customer_id", + "in": "query", + "description": "Filter by customer ID", + "required": false, + "schema": { + "type": "string" + }, + "example": "CUST123" + }, + { + "name": "account_id", + "in": "query", + "description": "Filter by account ID", + "required": false, + "schema": { + "type": "string" + }, + "example": "ACC456" + }, + { + "name": "status", + "in": "query", + "description": "Filter by loan status", + "required": false, + "schema": { + "type": "string" + }, + "example": "active" + }, + { + "name": "offer_id", + "in": "query", + "description": "Filter by offer ID", + "required": false, + "schema": { + "type": "string" + }, + "example": "OFFER789" + }, + { + "name": "product_id", + "in": "query", + "description": "Filter by product ID", + "required": false, + "schema": { + "type": "string" + }, + "example": "PROD101" + }, + { + "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 loans 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 loans due after this date (ISO format)", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + }, + "example": "2023-01-01T00:00:00Z" + } + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoansResponse" + } + } + } + }, + "400": { + "description": "Invalid request" + }, + "500": { + "description": "Internal server error" + } + } + } }, - "/SelectOffer": { - "$ref": "swagger/paths/SelectOffer.json" - }, - "/ProvideLoan": { - "$ref": "swagger/paths/ProvideLoan.json" - }, - "/LoanStatus": { - "$ref": "swagger/paths/LoanStatus.json" - }, - "/Repayment": { - "$ref": "swagger/paths/Repayment.json" + "/transactions": { + "get": { + "tags": [ + "Transactions" + ], + "summary": "Get all transactions with optional filtering", + "description": "Retrieve transactions with various filter options including account ID, type, channel, etc.", + "operationId": "getTransactions", + "parameters": [ + { + "name": "account_id", + "in": "query", + "description": "Filter by account ID", + "required": false, + "schema": { + "type": "string" + }, + "example": "ACC456" + }, + { + "name": "type", + "in": "query", + "description": "Filter by transaction type", + "required": false, + "schema": { + "type": "string" + }, + "example": "PAYMENT" + }, + { + "name": "channel", + "in": "query", + "description": "Filter by channel", + "required": false, + "schema": { + "type": "string" + }, + "example": "MOBILE" + }, + { + "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" + } + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransactionsResponse" + } + } + } + }, + "400": { + "description": "Invalid request" + }, + "500": { + "description": "Internal server error" + } + } + } } }, "components": { "schemas": { - "EligibilityCheckRequest": { - "$ref": "swagger/schemas/EligibilityCheckRequest.json" - }, - "EligibilityCheckResponse": { - "$ref": "swagger/schemas/EligibilityCheckResponse.json" - }, - "SelectOfferRequest": { - "$ref": "swagger/schemas/SelectOfferRequest.json" - }, - "SelectOfferResponse": { - "$ref": "swagger/schemas/SelectOfferResponse.json" - }, - "LoanStatusRequest": { - "$ref": "swagger/schemas/LoanStatusRequest.json" - }, - "LoanStatusResponse": { - "$ref": "swagger/schemas/LoanStatusResponse.json" - }, - "RepaymentRequest": { - "$ref": "swagger/schemas/RepaymentRequest.json" - }, - "RepaymentResponse": { - "$ref": "swagger/schemas/RepaymentResponse.json" - }, - "CustomerConsentRequest": { - "$ref": "swagger/schemas/CustomerConsentRequest.json" - }, - "CustomerConsentResponse": { - "$ref": "swagger/schemas/CustomerConsentResponse.json" - }, - "NotificationCallbackRequest": { - "$ref": "swagger/schemas/NotificationCallbackRequest.json" - }, - "NotificationCallbackResponse": { - "$ref": "swagger/schemas/NotificationCallbackResponse.json" - }, "ApiResponse": { - "$ref": "swagger/schemas/ApiResponse.json" - }, - "AuthorizeResponse": { - "$ref": "swagger/schemas/AuthorizeResponse.json" + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string" + }, + "message": { + "type": "string" + } + } }, "AuthorizeRequest": { - "$ref": "swagger/schemas/AuthorizeRequest.json" + "type": "object", + "properties": { + "username": { + "type": "string", + "example": "user123" + }, + "password": { + "type": "string", + "example": "password123" + } + }, + "required": ["username", "password"] }, - "AuthorizeRefreshResponse": { - "$ref": "swagger/schemas/AuthorizeRefreshResponse.json" + "AuthorizeResponse": { + "type": "object", + "properties": { + "access_token": { + "type": "string", + "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." + }, + "refresh_token": { + "type": "string", + "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." + }, + "token_type": { + "type": "string", + "example": "bearer" + }, + "expires_in": { + "type": "integer", + "example": 3600 + } + } }, "AuthorizeRefreshRequest": { - "$ref": "swagger/schemas/AuthorizeRefreshRequest.json" + "type": "object", + "properties": { + "refresh_token": { + "type": "string", + "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." + } + }, + "required": ["refresh_token"] + }, + "AuthorizeRefreshResponse": { + "type": "object", + "properties": { + "access_token": { + "type": "string", + "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." + }, + "token_type": { + "type": "string", + "example": "bearer" + }, + "expires_in": { + "type": "integer", + "example": 3600 + } + } + }, + "LoansResponse": { + "type": "object", + "properties": { + "loans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "example": 1 + }, + "customer_id": { + "type": "string", + "example": "CUST123" + }, + "account_id": { + "type": "string", + "example": "ACC456" + }, + "offer_id": { + "type": "string", + "example": "OFFER789" + }, + "initial_loan_amount": { + "type": "number", + "format": "float", + "example": 10000.0 + }, + "current_loan_amount": { + "type": "number", + "format": "float", + "example": 8500.0 + }, + "status": { + "type": "string", + "example": "active" + }, + "product_id": { + "type": "string", + "example": "PROD101" + }, + "default_penalty_fee": { + "type": "number", + "format": "float", + "example": 500.0 + }, + "continuous_fee": { + "type": "number", + "format": "float", + "example": 50.0 + }, + "due_date": { + "type": "string", + "format": "date-time", + "example": "2023-12-31T23:59:59Z" + }, + "created_at": { + "type": "string", + "format": "date-time", + "example": "2023-01-15T10:30:00Z" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "example": "2023-01-20T14:45:00Z" + } + } + } + }, + "count": { + "type": "integer", + "example": 1 + } + }, + "xml": { + "name": "LoansResponse" + } + }, + "TransactionsResponse": { + "type": "object", + "properties": { + "transactions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "example": 1 + }, + "transaction_id": { + "type": "string", + "example": "TRX123456" + }, + "account_id": { + "type": "string", + "example": "ACC456" + }, + "type": { + "type": "string", + "example": "PAYMENT" + }, + "channel": { + "type": "string", + "example": "MOBILE" + }, + "created_at": { + "type": "string", + "format": "date-time", + "example": "2023-01-15T10:30:00Z" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "example": "2023-01-15T10:30:00Z" + } + } + } + }, + "count": { + "type": "integer", + "example": 1 + } + }, + "xml": { + "name": "TransactionsResponse" + } } }, "securitySchemes": { @@ -171,4 +611,4 @@ "bearerAuth": [] } ] -} +} \ No newline at end of file diff --git a/app/swagger/paths/Loans.json b/app/swagger/paths/Loans.json new file mode 100644 index 0000000..57f2543 --- /dev/null +++ b/app/swagger/paths/Loans.json @@ -0,0 +1,124 @@ +{ + "get": { + "tags": [ + "Loans" + ], + "summary": "Get all loans with optional filtering", + "description": "Retrieve loans with various filter options including customer ID, account ID, status, etc.", + "operationId": "getLoans", + "parameters": [ + { + "name": "customer_id", + "in": "query", + "description": "Filter by customer ID", + "required": false, + "schema": { + "type": "string" + }, + "example": "CUST123" + }, + { + "name": "account_id", + "in": "query", + "description": "Filter by account ID", + "required": false, + "schema": { + "type": "string" + }, + "example": "ACC456" + }, + { + "name": "status", + "in": "query", + "description": "Filter by loan status", + "required": false, + "schema": { + "type": "string" + }, + "example": "active" + }, + { + "name": "offer_id", + "in": "query", + "description": "Filter by offer ID", + "required": false, + "schema": { + "type": "string" + }, + "example": "OFFER789" + }, + { + "name": "product_id", + "in": "query", + "description": "Filter by product ID", + "required": false, + "schema": { + "type": "string" + }, + "example": "PROD101" + }, + { + "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 loans 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 loans due after this date (ISO format)", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + }, + "example": "2023-01-01T00:00:00Z" + } + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "../schemas/LoansResponse.json" + } + } + } + }, + "400": { + "description": "Invalid request" + }, + "500": { + "description": "Internal server error" + } + } + } +} \ No newline at end of file diff --git a/app/swagger/paths/Transactions.json b/app/swagger/paths/Transactions.json new file mode 100644 index 0000000..d6dce75 --- /dev/null +++ b/app/swagger/paths/Transactions.json @@ -0,0 +1,82 @@ +{ + "get": { + "tags": [ + "Transactions" + ], + "summary": "Get all transactions with optional filtering", + "description": "Retrieve transactions with various filter options including account ID, type, channel, etc.", + "operationId": "getTransactions", + "parameters": [ + { + "name": "account_id", + "in": "query", + "description": "Filter by account ID", + "required": false, + "schema": { + "type": "string" + }, + "example": "ACC456" + }, + { + "name": "type", + "in": "query", + "description": "Filter by transaction type", + "required": false, + "schema": { + "type": "string" + }, + "example": "PAYMENT" + }, + { + "name": "channel", + "in": "query", + "description": "Filter by channel", + "required": false, + "schema": { + "type": "string" + }, + "example": "MOBILE" + }, + { + "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" + } + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "../schemas/TransactionsResponse.json" + } + } + } + }, + "400": { + "description": "Invalid request" + }, + "500": { + "description": "Internal server error" + } + } + } +} \ No newline at end of file diff --git a/app/swagger/schemas/LoansResponse.json b/app/swagger/schemas/LoansResponse.json new file mode 100644 index 0000000..12ba75f --- /dev/null +++ b/app/swagger/schemas/LoansResponse.json @@ -0,0 +1,79 @@ +{ + "type": "object", + "properties": { + "loans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "example": 1 + }, + "customer_id": { + "type": "string", + "example": "CUST123" + }, + "account_id": { + "type": "string", + "example": "ACC456" + }, + "offer_id": { + "type": "string", + "example": "OFFER789" + }, + "initial_loan_amount": { + "type": "number", + "format": "float", + "example": 10000.0 + }, + "current_loan_amount": { + "type": "number", + "format": "float", + "example": 8500.0 + }, + "status": { + "type": "string", + "example": "active" + }, + "product_id": { + "type": "string", + "example": "PROD101" + }, + "default_penalty_fee": { + "type": "number", + "format": "float", + "example": 500.0 + }, + "continuous_fee": { + "type": "number", + "format": "float", + "example": 50.0 + }, + "due_date": { + "type": "string", + "format": "date-time", + "example": "2023-12-31T23:59:59Z" + }, + "created_at": { + "type": "string", + "format": "date-time", + "example": "2023-01-15T10:30:00Z" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "example": "2023-01-20T14:45:00Z" + } + } + } + }, + "count": { + "type": "integer", + "example": 1 + } + }, + "xml": { + "name": "LoansResponse" + } +} \ No newline at end of file diff --git a/app/swagger/schemas/TransactionsResponse.json b/app/swagger/schemas/TransactionsResponse.json new file mode 100644 index 0000000..fb452e8 --- /dev/null +++ b/app/swagger/schemas/TransactionsResponse.json @@ -0,0 +1,50 @@ +{ + "type": "object", + "properties": { + "transactions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "example": 1 + }, + "transaction_id": { + "type": "string", + "example": "TRX123456" + }, + "account_id": { + "type": "string", + "example": "ACC456" + }, + "type": { + "type": "string", + "example": "PAYMENT" + }, + "channel": { + "type": "string", + "example": "MOBILE" + }, + "created_at": { + "type": "string", + "format": "date-time", + "example": "2023-01-15T10:30:00Z" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "example": "2023-01-15T10:30:00Z" + } + } + } + }, + "count": { + "type": "integer", + "example": 1 + } + }, + "xml": { + "name": "TransactionsResponse" + } +} \ No newline at end of file