{"info":{"_postman_id":"5f2c3ac2-1fca-4853-bada-f443a0cfd668","name":"MudraVault API","description":"<html><head></head><body><p>This Postman collection provides a complete set of endpoints for the <strong>MudraVault API</strong>, a secure, feature-rich digital wallet system built with <strong>Express.js</strong>, <strong>MongoDB</strong>, <strong>Redis</strong>, and <strong>Razorpay</strong>. It includes:</p>\n<ul>\n<li><p><strong>User Authentication with OTP (Email + Mobile)</strong></p>\n</li>\n<li><p><strong>Wallet Management</strong></p>\n</li>\n<li><p><strong>Peer-to-Peer Transfers (P2P)</strong></p>\n</li>\n<li><p><strong>Transaction PIN (like UPI PIN)</strong></p>\n</li>\n<li><p><strong>Razorpay Integration for Top-ups</strong></p>\n</li>\n<li><p><strong>Webhook Handling &amp; Transaction Verification</strong></p>\n</li>\n<li><p><strong>Rate Limiting</strong></p>\n</li>\n<li><p><strong>Transaction Filtering &amp; Analytics</strong></p>\n</li>\n<li><p><strong>Swagger Docs &amp; Postman Docs Ready</strong></p>\n</li>\n</ul>\n<hr>\n<h2 id=\"collection-structure\">Collection Structure</h2>\n<p>The collection is organized by <strong>features/modules</strong> for clarity:</p>\n<h3 id=\"authentication--otp\">Authentication &amp; OTP</h3>\n<ul>\n<li><p><code>POST /otp/molile</code> – Send OTP to Mobile Number</p>\n</li>\n<li><p><code>POST /otp/verify-mobile</code> – Verify OTP sent to Mobile Number</p>\n</li>\n<li><p><code>POST /auth/signup</code> – Register new users and save them in db</p>\n</li>\n<li><p><code>POST /otp/email</code> – Send OTP to registered email</p>\n</li>\n<li><p><code>POST /otp/verify-otp</code> – Verify OTP sent to Email</p>\n</li>\n<li><p><code>POST /auth/login</code> – Login with email and password</p>\n</li>\n</ul>\n<h3 id=\"wallet--transactions\">Wallet &amp; Transactions</h3>\n<ul>\n<li><p><code>POST /wallet/transfer</code> – Internal wallet-to-wallet transfers (P2P)</p>\n</li>\n<li><p><code>GET /wallet/</code>balance– Get balance and account number</p>\n</li>\n</ul>\n<h3 id=\"razorpay-integration\">Razorpay Integration</h3>\n<ul>\n<li><p><code>POST /payments/topup</code> – Create a Razorpay order for top-up and provide the link for Payment Page</p>\n</li>\n<li><p><code>POST /payments/webhook</code> – Verify Razorpay payment via webhook</p>\n</li>\n</ul>\n<h3 id=\"transaction-details\">Transaction Details</h3>\n<ul>\n<li><p><code>GET /transactions/history</code> – Get complete transaction history using required filters</p>\n</li>\n<li><p><code>GET /transactions/</code>pdf– Export the transaction history in form of pdf</p>\n</li>\n</ul>\n<h3 id=\"user-features\">User Features</h3>\n<ul>\n<li><p><code>POST/user/changePassword</code>– Change the Password as per convenience</p>\n</li>\n<li><p><code>POST/user/changePin</code>– Change the PIN as per convenience</p>\n</li>\n</ul>\n<h3 id=\"security\">Security</h3>\n<ul>\n<li><p>Transaction PIN required for all sensitive actions (transfer, top-up)</p>\n</li>\n<li><p>OTP stored in <strong>Redis</strong> with auto-expiry</p>\n</li>\n<li><p>All endpoints protected by <strong>JWT authentication</strong> middleware</p>\n</li>\n</ul>\n<hr>\n<h2 id=\"✅-how-to-use-this-collection\">✅ How to Use This Collection</h2>\n<ol>\n<li><p><strong>Import the collection</strong> into Postman.</p>\n</li>\n<li><p>Set up the following <strong>Postman Environment Variables</strong>:</p>\n<ul>\n<li><code></code> – API base URL (e.g., <a href=\"http://localhost:5000\">http://localhost:3000</a>)</li>\n</ul>\n</li>\n<li><p>Use the <strong>Pre-request Scripts</strong> (where added) to automatically inject headers.</p>\n</li>\n<li><p>Begin with Authentication and OTP and follow the sequence in which the routes are presented in docs.</p>\n</li>\n</ol>\n<hr>\n<h2 id=\"🧪-testing-notes\">🧪 Testing Notes</h2>\n<ul>\n<li><p><strong>All endpoints validated using Postman test scripts</strong> (where relevant).</p>\n</li>\n<li><p><strong>Edge cases</strong> (e.g., expired OTPs, incorrect PINs, insufficient balance) can be tested using specific test data.</p>\n</li>\n<li><p>For <strong>Razorpay webhooks</strong>, use <code>ngrok / localtunnel</code> and simulate events via the Razorpay dashboard.</p>\n</li>\n<li><p>If webhooks does not work then test them after deployment and make necessary changes.</p>\n</li>\n</ul>\n<hr>\n<h2 id=\"📄-documentation--repo\">📄 Documentation &amp; Repo</h2>\n<ul>\n<li><p>Swagger Docs: <a href=\"https://virtual-wallet-api.onrender.com/api-docs/\">https://virtual-wallet-api.onrender.com/api-docs/</a></p>\n</li>\n<li><p><strong>GitHub Repo:</strong> <a href=\"https://github.com/tush1504/Virtual-Wallet-API\">https://github.com/tush1504/Virtual-Wallet-API</a></p>\n</li>\n<li><p><strong>Tech Stack:</strong> Node.js, Express, MongoDB, Redis, Razorpay, Nodemailer, 2Factor</p>\n</li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"45879803","collectionId":"5f2c3ac2-1fca-4853-bada-f443a0cfd668","publishedId":"2sB3QGtrGY","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-10-03T14:10:36.000Z"},"item":[{"name":"Auth & OTP","item":[{"name":"Send Mobile OTP","id":"4d1401da-62aa-4aed-8604-9a36d8d72311","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"mobile\":\"9876543210\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/otp/mobile","description":"<h2 id=\"api-request-send-otp-to-mobile\">API Request: Send OTP to Mobile</h2>\n<p><strong>Method:</strong> POST<br /><strong>Endpoint:</strong> <code>/otp/mobile</code></p>\n<h3 id=\"description\">Description</h3>\n<p>This API allows users to send an OTP (One Time Password) to a specified mobile number. Upon entering a valid mobile number, an OTP will be sent to that number via a voice call.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<ul>\n<li><strong>mobile</strong> (string): The mobile number to which the OTP will be sent. This parameter is required.</li>\n</ul>\n<h3 id=\"request-body-example\">Request Body Example</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"mobile\": \"9876543210\"\n}\n\n</code></pre>\n<h3 id=\"expected-response\">Expected Response</h3>\n<p>On a successful request, the API returns a status code of <strong>200</strong> with the following response format:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"OTP sent to mobile number\"\n}\n\n</code></pre>\n<h3 id=\"related-responses\">Related Responses</h3>\n<p>Other endpoints of this API may return the following data structures:</p>\n<ul>\n<li><p>{ \"balance\": 0, \"accountNumber\": \"\"}</p>\n</li>\n<li><p>{ \"message\": \"\", \"groupId\": \"\"}</p>\n</li>\n<li><p>{ \"total\": 0, \"page\": 0, \"limit\": 0, \"totalPages\": 0, \"transactions\": [ { \"_id\": \"\", \"referenceId\": \"\", \"groupId\": \"\", \"type\": \"\", \"payGateway\": \"\", \"status\": \"\", \"amount\": 0, \"description\": \"\", \"sender\": { \"_id\": \"\", \"contact\": \"\" }, \"receiver\": { \"_id\": \"\", \"contact\": \"\" }, \"user\": \"\", \"createdOn\": \"\", \"__v\": 0 } ]}<br />  This structure may be returned with a status code of <strong>200</strong> as well.</p>\n</li>\n</ul>\n","urlObject":{"path":["otp","mobile"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"4d1401da-62aa-4aed-8604-9a36d8d72311"},{"name":"Send Email OTP","id":"354a7df5-9014-4738-ba47-a39d94a60eea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\":\"myemail123@gmail.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/otp/email","description":"<h2 id=\"endpoint-send-otp-to-email\">Endpoint: Send OTP to Email</h2>\n<p>This endpoint is used to send a One-Time Password (OTP) to the specified email address.</p>\n<p>This API is to be requested after signup process.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><p><strong>Method</strong>: POST</p>\n</li>\n<li><p><strong>URL</strong>: <code>/otp/email</code></p>\n</li>\n<li><p><strong>Content-Type</strong>: application/json</p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>The request body must be in JSON format and contain the following parameter:</p>\n<ul>\n<li><strong>email</strong> (string): The email address to which the OTP will be sent. This is a required field.</li>\n</ul>\n<p><strong>Example Request Body</strong>:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"example@example.com\"\n}\n\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p>On a successful request, the server will respond with a 200 status code and a message confirming the action. The response will generally include the following structure:</p>\n<ul>\n<li><strong>message</strong> (string): A confirmation message regarding the OTP sent status.</li>\n</ul>\n<p><strong>Example Response</strong>:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"OTP sent successfully\"\n}\n\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure that the email provided is valid and accessible by the user, as the OTP will be sent to this address.</p>\n</li>\n<li><p>The structure of the response may vary slightly depending on the context of the request, but it will generally include a message confirming the action taken.</p>\n</li>\n<li><p>This endpoint is part of a broader API that may include functionalities like checking account balance, retrieving transactions, and managing user groups.</p>\n</li>\n</ul>\n","urlObject":{"path":["otp","email"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"354a7df5-9014-4738-ba47-a39d94a60eea"},{"name":"Verify Mobile OTP","id":"4c6ea1b2-a774-4b89-828a-2c0069cb796d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"key\":\"9876543210\",\r\n    \"otp\":\"740991\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/otp/verify-mobile","description":"<h2 id=\"verify-mobile-otp\">Verify Mobile OTP</h2>\n<p>This endpoint is used to verify a One-Time Password (OTP) associated with a mobile number. It is typically called after a user requests an OTP for authentication purposes.</p>\n<h3 id=\"request\">Request</h3>\n<p><strong>Method:</strong> POST<br /><strong>Endpoint:</strong> <code>/otp/verify-mobile</code></p>\n<h4 id=\"request-body\">Request Body</h4>\n<p>The request body must be sent in JSON format and should contain the following parameters:</p>\n<ul>\n<li><p><strong>key</strong> (string): The mobile number that is being verified.</p>\n</li>\n<li><p><strong>otp</strong> (string): The One-Time Password that was sent to the mobile number.</p>\n</li>\n</ul>\n<p><strong>Example Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key\": \"9479230415\",\n  \"otp\": \"940414\"\n}\n\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p>Upon a successful verification, the API will return a response with a 200 status code. The response may vary based on the context of the request but typically includes:</p>\n<ul>\n<li><p><strong>message</strong> (string): A confirmation message regarding the OTP verification.</p>\n</li>\n<li><p>Additional responses from related endpoints may include user account details, transaction history, or balance information, depending on the subsequent API calls made.</p>\n</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure that the OTP is valid and has not expired before making this request.</p>\n</li>\n<li><p>This endpoint is crucial for secure operations that require user authentication through mobile verification.</p>\n</li>\n</ul>\n","urlObject":{"path":["otp","verify-mobile"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"4c6ea1b2-a774-4b89-828a-2c0069cb796d"},{"name":"Signup","id":"a88a3a66-e6d9-4969-94ce-b2bfd8d5f65f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"firstName\": \"Alpha\",\r\n  \"lastName\": \"Beta\",\r\n  \"email\": \"myemail@gmail.com\",\r\n  \"contact\": \"9876543210\",\r\n  \"gender\": \"male\",\r\n  \"dob\": \"2000-01-01\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/signup","description":"<h2 id=\"signup-endpoint\">Signup Endpoint</h2>\n<p>This endpoint is used to create a new user account by submitting the user's details.</p>\n<p>The mobile number must be verified before accessing this request.</p>\n<h3 id=\"request\">Request</h3>\n<p><strong>Method:</strong> POST<br /><strong>URL:</strong> <code>/auth/signup</code></p>\n<h4 id=\"request-body\">Request Body</h4>\n<p>The request body must be in JSON format and include the following parameters:</p>\n<ul>\n<li><p><code>firstName</code> (string): The first name of the user.</p>\n</li>\n<li><p><code>lastName</code> (string): The last name of the user.</p>\n</li>\n<li><p><code>email</code> (string): The email address of the user.</p>\n</li>\n<li><p><code>contact</code> (string): The contact number of the user.</p>\n</li>\n<li><p><code>gender</code> (string): The gender of the user.</p>\n</li>\n<li><p><code>dob</code> (string): The date of birth of the user in the format YYYY-MM-DD.</p>\n</li>\n</ul>\n<p><strong>Example Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"example@example.com\",\n  \"contact\": \"1234567890\",\n  \"gender\": \"male\",\n  \"dob\": \"2000-01-01\"\n}\n\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p>The response will return a JSON object.</p>\n<h4 id=\"possible-responses\">Possible Responses:</h4>\n<ul>\n<li><p><strong>Status 200</strong>: Indicates successful account creation. The response will include a message confirming the registration.</p>\n</li>\n<li><p><strong>Status 400</strong>: Indicates a bad request. The response will include an empty message indicating that the request was not processed successfully.</p>\n</li>\n</ul>\n<p><strong>Example Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"\"\n}\n\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure that all required fields are filled out correctly to avoid a 400 status response.</p>\n</li>\n<li><p>The structure of the response may vary based on the endpoint being called, but typically includes a message or relevant user information.</p>\n</li>\n<li><p>For successful responses from other related endpoints, you may receive structured data that includes user balances, account numbers, and transaction details.</p>\n</li>\n</ul>\n","urlObject":{"path":["auth","signup"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"a88a3a66-e6d9-4969-94ce-b2bfd8d5f65f"},{"name":"Login","id":"d791a47b-22e5-4cab-ad35-25414d79d93f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\":\"myemail123@gmail.com\",\r\n    \"password\":\"et5IEARg\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/login","description":"<h3 id=\"login-endpoint\">Login Endpoint</h3>\n<p>This endpoint is used to authenticate a user by logging them into the system. It requires the user's email and password to be sent in the request body. Upon successful authentication, the server will respond with relevant user data.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Method</strong>: POST</p>\n</li>\n<li><p><strong>Endpoint</strong>: <code>/auth/login</code></p>\n</li>\n<li><p><strong>Request Body</strong>: The request should be sent in JSON format with the following parameters:</p>\n<ul>\n<li><p><code>email</code> (string): The email address of the user attempting to log in.</p>\n</li>\n<li><p><code>password</code> (string): The password associated with the user's account.</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>Example Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"user@example.com\",\n  \"password\": \"your_password\"\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<p>On a successful login, the server will return a response with a status code of 200. The response structure may vary based on subsequent API calls, but generally includes:</p>\n<ul>\n<li><p><strong>Common Response Fields</strong>:</p>\n<ul>\n<li><p><code>message</code> (string): A message indicating the result of the login attempt.</p>\n</li>\n<li><p><code>balance</code> (number): The current balance of the user's account.</p>\n</li>\n<li><p><code>accountNumber</code> (string): The user's account number.</p>\n</li>\n<li><p><code>groupId</code> (string): Identifier for the user's group.</p>\n</li>\n<li><p><code>transactions</code> (array): A list of transaction objects associated with the user, which includes:</p>\n<ul>\n<li><p><code>_id</code> (string): Unique identifier for the transaction.</p>\n</li>\n<li><p><code>referenceId</code> (string): Reference ID for the transaction.</p>\n</li>\n<li><p><code>groupId</code> (string): Group ID associated with the transaction.</p>\n</li>\n<li><p><code>type</code> (string): Type of transaction.</p>\n</li>\n<li><p><code>payGateway</code> (string): Payment gateway used.</p>\n</li>\n<li><p><code>status</code> (string): Current status of the transaction.</p>\n</li>\n<li><p><code>amount</code> (number): Amount involved in the transaction.</p>\n</li>\n<li><p><code>description</code> (string): Description of the transaction.</p>\n</li>\n<li><p><code>sender</code> (object): Details of the sender, including:</p>\n<ul>\n<li><p><code>_id</code> (string): Sender's unique identifier.</p>\n</li>\n<li><p><code>contact</code> (string): Sender's contact information.</p>\n</li>\n</ul>\n</li>\n<li><p><code>receiver</code> (object): Details of the receiver, including:</p>\n<ul>\n<li><p><code>_id</code> (string): Receiver's unique identifier.</p>\n</li>\n<li><p><code>contact</code> (string): Receiver's contact information.</p>\n</li>\n</ul>\n</li>\n<li><p><code>user</code> (string): User associated with the transaction.</p>\n</li>\n<li><p><code>createdOn</code> (string): Timestamp of when the transaction was created.</p>\n</li>\n<li><p><code>__v</code> (number): Version key for the transaction.</p>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>Example Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Login successful\",\n  \"balance\": 100,\n  \"accountNumber\": \"123456789\",\n  \"groupId\": \"group_1\",\n  \"transactions\": [\n    {\n      \"_id\": \"transaction_id\",\n      \"referenceId\": \"ref_id\",\n      \"groupId\": \"group_id\",\n      \"type\": \"credit\",\n      \"payGateway\": \"gateway_name\",\n      \"status\": \"completed\",\n      \"amount\": 50,\n      \"description\": \"Payment for services\",\n      \"sender\": {\n        \"_id\": \"sender_id\",\n        \"contact\": \"sender@example.com\"\n      },\n      \"receiver\": {\n        \"_id\": \"receiver_id\",\n        \"contact\": \"receiver@example.com\"\n      },\n      \"user\": \"user_id\",\n      \"createdOn\": \"2023-01-01T00:00:00Z\",\n      \"__v\": 0\n    }\n  ]\n}\n\n</code></pre>\n","urlObject":{"path":["auth","login"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"d791a47b-22e5-4cab-ad35-25414d79d93f"},{"name":"Verify Email OTP","id":"7fe38a1e-39a8-45c9-bf7e-abee6315c99d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\":\"myemail123@gmail.com\",\r\n    \"otp\":\"221620\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"/otp/verify-email","description":"<h3 id=\"verify-email-otp\">Verify Email OTP</h3>\n<p>This endpoint is used to verify the One-Time Password (OTP) sent to a user's email address. It is essential for confirming the user's identity during the registration or login process.</p>\n<p>On successful verification , the lodin and wallet details of the user will be sent to the registered email.</p>\n<h4 id=\"request\">Request</h4>\n<p><strong>Method:</strong> POST<br /><strong>Endpoint:</strong> <code>/otp/verify-email</code></p>\n<p><strong>Request Body:</strong><br />The request body must be in JSON format and include the following parameters:</p>\n<ul>\n<li><p><code>email</code> (string): The email address of the user for whom the OTP is being verified.</p>\n</li>\n<li><p><code>otp</code> (string): The One-Time Password sent to the user's email.</p>\n</li>\n</ul>\n<p><strong>Example Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"user@example.com\",\n  \"otp\": \"123456\"\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<p>Upon a successful OTP verification, the API will return a response with a 200 status code. The response structure may vary based on the context of the request but generally includes:</p>\n<ul>\n<li><p><code>message</code> (string): A message indicating the success or failure of the OTP verification process.</p>\n</li>\n<li><p>Additional related data may include user account details or transaction information, depending on the context of the request.</p>\n</li>\n</ul>\n<p><strong>Example Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"OTP verified successfully.\"\n}\n\n</code></pre>\n<h4 id=\"notes\">Notes</h4>\n<ul>\n<li><p>Ensure that the email provided matches the email to which the OTP was sent.</p>\n</li>\n<li><p>The OTP is time-sensitive; it may expire if not used within a specific timeframe.</p>\n</li>\n<li><p>Users should handle responses appropriately to guide them through the verification process.</p>\n</li>\n</ul>\n","urlObject":{"path":["otp","verify-email"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"7fe38a1e-39a8-45c9-bf7e-abee6315c99d"}],"id":"302f7669-582e-4217-b7ec-6b1c293a9bd1","description":"<p>This folder cintains all the routes that is required for successful registration and login into the program.</p>\n","_postman_id":"302f7669-582e-4217-b7ec-6b1c293a9bd1"},{"name":"Wallet","item":[{"name":"Balance","id":"1a68b22b-e789-402f-99c1-efeaa112fdee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY4ZGQ4OTI4OTA1OGRhYThkYjdmNWM4NyIsImlhdCI6MTc1OTM5Njc3MiwiZXhwIjoxNzYwMDAxNTcyfQ.3UHPePwBxvn15lSTT9yueRdYhbiIhCktihj_6m1ubuo","type":"text"}],"url":"/wallet/balance","description":"<h2 id=\"get-wallet-balance\">Get Wallet Balance</h2>\n<p>This endpoint retrieves the current balance of the user's wallet associated with their account.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><p><strong>Method</strong>: GET</p>\n</li>\n<li><p><strong>Endpoint</strong>: <code>/wallet/balance</code></p>\n</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>On a successful request, the API returns a JSON object with the following structure:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"balance\": 0,\n  \"accountNumber\": \"\"\n}\n\n</code></pre>\n<h4 id=\"response-fields\">Response Fields:</h4>\n<ul>\n<li><p><strong>balance</strong> (integer): The current balance in the user's wallet. This value may be zero or a positive integer.</p>\n</li>\n<li><p><strong>accountNumber</strong> (string): The account number associated with the wallet. This may be an empty string if not applicable.</p>\n</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>A successful request will return a <code>200 OK</code> status code.</p>\n</li>\n<li><p>The response structure is consistent with other related endpoints in the API, which may return messages or transaction details.</p>\n</li>\n<li><p>Ensure that the user is authenticated and authorized to access their wallet balance before making this request.</p>\n</li>\n</ul>\n","urlObject":{"path":["wallet","balance"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"ddf3d70a-1655-46b0-800b-c4fece5db2a0","name":"Balance","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY4NWY4NTQxMDMxNTkyNzE5MmZmNjc0ZCIsImlhdCI6MTc1MTEwMDg1NywiZXhwIjoxNzUxNzA1NjU3fQ.VGfn8uYA9QUOY6Iv2lSG0sTzp1BOinTlqlOgCWvDXLM","type":"text"}],"url":"/wallet/balance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"47"},{"key":"ETag","value":"W/\"2f-CWErMmGI24cBdlPFcnWKUarCtkc\""},{"key":"Date","value":"Sun, 29 Jun 2025 05:52:50 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"balance\": 61002,\n    \"accountNumber\": \"10460126522\"\n}"}],"_postman_id":"1a68b22b-e789-402f-99c1-efeaa112fdee"},{"name":"Internal Transfer","id":"631072c6-bdb5-412b-988b-b43ff7aabba2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY4ZGQ4OTI4OTA1OGRhYThkYjdmNWM4NyIsImlhdCI6MTc1OTM5Njc3MiwiZXhwIjoxNzYwMDAxNTcyfQ.3UHPePwBxvn15lSTT9yueRdYhbiIhCktihj_6m1ubuo","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"contact\":\"9368527410\",\r\n    \"amount\":1,\r\n    \"pin\":\"7337\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/wallet/transfer","description":"<h3 id=\"wallet-transfer-api\">Wallet Transfer API</h3>\n<p>This endpoint allows users to transfer funds from their wallet to a specified contact. The transfer is initiated by sending a POST request to the <code>/wallet/transfer</code> endpoint with the necessary details in the request body.</p>\n<h4 id=\"request-format\">Request Format</h4>\n<p>The request body must be in JSON format and should include the following parameters:</p>\n<ul>\n<li><p><strong>contact</strong> (string): The contact number of the recipient to whom the funds will be transferred.</p>\n</li>\n<li><p><strong>amount</strong> (number): The amount of money to be transferred.</p>\n</li>\n<li><p><strong>pin</strong> (string): The PIN code required to authorize the transfer.</p>\n</li>\n</ul>\n<p><strong>Example Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"contact\": \"6265906318\",\n  \"amount\": 1,\n  \"pin\": \"1369\"\n}\n\n</code></pre>\n<h4 id=\"response-structure\">Response Structure</h4>\n<p>Upon a successful transfer, the API will respond with a status code of <code>200</code> and a JSON object containing the following fields:</p>\n<ul>\n<li><p><strong>message</strong> (string): A message indicating the result of the transfer operation (may be empty).</p>\n</li>\n<li><p><strong>groupId</strong> (string): An identifier for the group associated with the transfer (may be empty).</p>\n</li>\n</ul>\n<p><strong>Example Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"\",\n  \"groupId\": \"\"\n}\n\n</code></pre>\n<h3 id=\"related-responses\">Related Responses</h3>\n<p>Other endpoints in the API may return similar structures, including messages and account details. For instance:</p>\n<ul>\n<li><p>A response indicating the current balance or account number.</p>\n</li>\n<li><p>A response detailing transaction history, including transaction IDs, amounts, and statuses.</p>\n</li>\n</ul>\n<p>This consistency in response structure helps in maintaining a uniform interaction pattern across the API.</p>\n","urlObject":{"path":["wallet","transfer"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"e5489661-9371-4363-bf7c-98225400037a","name":"Internal Transfer","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY4NWY4NTQxMDMxNTkyNzE5MmZmNjc0ZCIsImlhdCI6MTc1MTEwMDg1NywiZXhwIjoxNzUxNzA1NjU3fQ.VGfn8uYA9QUOY6Iv2lSG0sTzp1BOinTlqlOgCWvDXLM","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"contact\":\"6265906318\",\r\n    \"amount\":1,\r\n    \"pin\":\"1369\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/wallet/transfer"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"67"},{"key":"ETag","value":"W/\"43-7HTvxFAuTZfQvB6OkLNfdMCG4gE\""},{"key":"Date","value":"Sun, 29 Jun 2025 05:55:23 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Transfer successful\",\n    \"groupId\": \"txn_1751176523563_268\"\n}"}],"_postman_id":"631072c6-bdb5-412b-988b-b43ff7aabba2"}],"id":"b004b671-15d6-4da5-941f-927b55308d68","_postman_id":"b004b671-15d6-4da5-941f-927b55308d68","description":""},{"name":"Payments","item":[{"name":"TopUp","id":"9cc25088-7712-4a46-bdff-03731f18df48","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY4ZGQ4OTI4OTA1OGRhYThkYjdmNWM4NyIsImlhdCI6MTc1OTM5Njc3MiwiZXhwIjoxNzYwMDAxNTcyfQ.3UHPePwBxvn15lSTT9yueRdYhbiIhCktihj_6m1ubuo","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"amount\":50000\r\n}","options":{"raw":{"language":"json"}}},"url":"/payments/topup","description":"<h2 id=\"endpoint-top-up-payment\">Endpoint: Top-Up Payment</h2>\n<p>This endpoint allows users to initiate a top-up payment by providing the desired amount.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><p><strong>Method</strong>: POST</p>\n</li>\n<li><p><strong>URL</strong>: <code>/payments/topup</code></p>\n</li>\n<li><p><strong>Request Body</strong> (JSON):</p>\n<ul>\n<li><code>amount</code> (integer, required): The amount to be topped up. This value should be specified in the smallest currency unit (e.g., cents for USD).</li>\n</ul>\n</li>\n</ul>\n<p><strong>Example Request Body</strong>:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"amount\": 50000\n}\n\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p>On a successful request, the API will return a 200 status code with the following JSON structure:</p>\n<ul>\n<li><p><code>orderId</code> (string): The unique identifier for the order created.</p>\n</li>\n<li><p><code>amount</code> (integer): The amount that has been processed.</p>\n</li>\n<li><p><code>paymentLink</code> (string): A link to the payment page or confirmation.</p>\n</li>\n</ul>\n<p><strong>Example Response</strong>:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"orderId\": \"\",\n  \"amount\": 0,\n  \"paymentLink\": \"\"\n}\n\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure that the amount is a positive integer and represents the total value intended for the top-up.</p>\n</li>\n<li><p>The response will confirm the order details, including the payment link for further actions.</p>\n</li>\n<li><p>This endpoint is part of a larger API that may return various responses depending on the context of the request. Other endpoints may return messages or transaction details relevant to the user's account and activities.</p>\n</li>\n</ul>\n","urlObject":{"path":["payments","topup"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"9cc25088-7712-4a46-bdff-03731f18df48"}],"id":"f0accb15-194e-462a-9371-78abfebb01e9","_postman_id":"f0accb15-194e-462a-9371-78abfebb01e9","description":""},{"name":"Transactions","item":[{"name":"History","id":"4d4b8d6b-7b09-4700-80ce-41691172e03c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY4ZGQ4OTI4OTA1OGRhYThkYjdmNWM4NyIsImlhdCI6MTc1OTM5Njc3MiwiZXhwIjoxNzYwMDAxNTcyfQ.3UHPePwBxvn15lSTT9yueRdYhbiIhCktihj_6m1ubuo","type":"text"}],"url":"/transactions/history","description":"<h2 id=\"endpoint-retrieve-transaction-history\">Endpoint: Retrieve Transaction History</h2>\n<p>This endpoint allows users to retrieve the history of transactions associated with their account. It returns a paginated list of transactions, including details such as transaction IDs, amounts, statuses, and timestamps.</p>\n<p>We can use different Key-Values in the parametere section to get the transaction history as per our required filters.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><p><strong>Method</strong>: GET</p>\n</li>\n<li><p><strong>URL</strong>: <code>/transactions/history</code></p>\n</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>The response will return a JSON object with the following structure:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"total\": &lt;number&gt;,          // Total number of transactions\n  \"page\": &lt;number&gt;,           // Current page number\n  \"limit\": &lt;number&gt;,          // Number of transactions per page\n  \"totalPages\": &lt;number&gt;,     // Total number of pages available\n  \"transactions\": [           // Array of transaction objects\n    {\n      \"_id\": \"&lt;string&gt;\",      // Unique identifier for the transaction\n      \"referenceId\": \"&lt;string&gt;\", // Reference ID for the transaction\n      \"groupId\": \"&lt;string&gt;\",   // Group ID associated with the transaction\n      \"type\": \"&lt;string&gt;\",      // Type of transaction (e.g., credit, debit)\n      \"payGateway\": \"&lt;string&gt;\", // Payment gateway used for the transaction\n      \"status\": \"&lt;string&gt;\",    // Current status of the transaction\n      \"amount\": &lt;number&gt;,      // Amount involved in the transaction\n      \"description\": \"&lt;string&gt;\", // Description of the transaction\n      \"sender\": {              // Sender details\n        \"_id\": \"&lt;string&gt;\",      // Sender&amp;#x27;s unique identifier\n        \"contact\": \"&lt;string&gt;\"    // Sender&amp;#x27;s contact information\n      },\n      \"receiver\": {            // Receiver details\n        \"_id\": \"&lt;string&gt;\",      // Receiver&amp;#x27;s unique identifier\n        \"contact\": \"&lt;string&gt;\"    // Receiver&amp;#x27;s contact information\n      },\n      \"user\": \"&lt;string&gt;\",       // User associated with the transaction\n      \"createdOn\": \"&lt;string&gt;\",  // Timestamp of when the transaction was created\n      \"__v\": &lt;number&gt;          // Version key for the transaction\n    }\n  ]\n}\n\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>The <code>total</code>, <code>page</code>, <code>limit</code>, and <code>totalPages</code> fields provide pagination information.</p>\n</li>\n<li><p>The <code>transactions</code> array will contain transaction objects, each with detailed information.</p>\n</li>\n<li><p>If there are no transactions, the <code>transactions</code> array will be empty, and <code>total</code> will be <code>0</code>.</p>\n</li>\n<li><p>Ensure to handle the pagination parameters appropriately if you are implementing this in your application.</p>\n</li>\n</ul>\n<h3 id=\"example-response\">Example Response</h3>\n<p>A typical response might look like this:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"total\": 0,\n  \"page\": 0,\n  \"limit\": 0,\n  \"totalPages\": 0,\n  \"transactions\": []\n}\n\n</code></pre>\n<p>This indicates that there are currently no transactions available for the user.</p>\n","urlObject":{"path":["transactions","history"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"4d4b8d6b-7b09-4700-80ce-41691172e03c"},{"name":"PDF","id":"a1cac084-576d-437b-b0c9-a9f658650a49","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY4ZGQ4OTI4OTA1OGRhYThkYjdmNWM4NyIsImlhdCI6MTc1OTM5Njc3MiwiZXhwIjoxNzYwMDAxNTcyfQ.3UHPePwBxvn15lSTT9yueRdYhbiIhCktihj_6m1ubuo","type":"text"}],"url":"/transactions/pdf","description":"<h2 id=\"api-endpoint-get-transaction-pdf\">API Endpoint: Get Transaction PDF</h2>\n<h3 id=\"method\">Method</h3>\n<p><code>GET</code></p>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><code>/transactions/pdf</code></p>\n<h3 id=\"description\">Description</h3>\n<p>This endpoint retrieves a PDF document containing transaction details. It is designed to provide users with a downloadable format of their transaction history.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<p>There are no specific request parameters required for this endpoint.</p>\n<h3 id=\"expected-response\">Expected Response</h3>\n<p>On a successful request, the server responds with a <code>200 OK</code> status and the content type will be <code>application/pdf</code>. The response will not contain a JSON body, as the output is a PDF file.</p>\n<h3 id=\"related-responses\">Related Responses</h3>\n<p>The following are examples of responses from other related endpoints that share similar data models:</p>\n<ul>\n<li><p>{\"message\":\"\"}</p>\n</li>\n<li><p>{\"balance\":0,\"accountNumber\":\"\"}</p>\n</li>\n<li><p>{\"message\":\"\",\"groupId\":\"\"}</p>\n</li>\n<li><p>{ \"total\":0, \"page\":0, \"limit\":0, \"totalPages\":0, \"transactions\":[ { \"_id\":\"\", \"referenceId\":\"\", \"groupId\":\"\", \"type\":\"\", \"payGateway\":\"\", \"status\":\"\", \"amount\":0, \"description\":\"\", \"sender\":{\"_id\":\"\",\"contact\":\"\"}, \"receiver\":{\"_id\":\"\",\"contact\":\"\"}, \"user\":\"\", \"createdOn\":\"\", \"__v\":0 } ]}</p>\n</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure that the endpoint is accessed with proper authentication if required.</p>\n</li>\n<li><p>The PDF document will contain the formatted transaction details as per the user's account history.</p>\n</li>\n</ul>\n","urlObject":{"path":["transactions","pdf"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"a1cac084-576d-437b-b0c9-a9f658650a49"}],"id":"194561c8-f929-4ea1-aa19-6672a59cb1ff","_postman_id":"194561c8-f929-4ea1-aa19-6672a59cb1ff","description":""},{"name":"User","item":[{"name":"Change Password","id":"fe0e65a0-0c3e-4e98-8213-2d71804ce596","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY4ZGQ4OTI4OTA1OGRhYThkYjdmNWM4NyIsImlhdCI6MTc1OTM5Njc3MiwiZXhwIjoxNzYwMDAxNTcyfQ.3UHPePwBxvn15lSTT9yueRdYhbiIhCktihj_6m1ubuo","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"currentPassword\":\"et5IEARg\",\r\n    \"newPassword\":\"Coding@101\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/user/changePassword","urlObject":{"path":["user","changePassword"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"fe0e65a0-0c3e-4e98-8213-2d71804ce596"},{"name":"Change PIN","id":"9e5e72e3-02b3-4d33-8a0d-5cfa136b7f3a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY4ZGQ4OTI4OTA1OGRhYThkYjdmNWM4NyIsImlhdCI6MTc1OTM5Njc3MiwiZXhwIjoxNzYwMDAxNTcyfQ.3UHPePwBxvn15lSTT9yueRdYhbiIhCktihj_6m1ubuo","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"currentPin\":\"7337\",\r\n    \"newPin\":\"9513\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/user/changePin","description":"<h3 id=\"change-user-pin\">Change User PIN</h3>\n<p>This endpoint allows users to change their account PIN. It requires the current PIN and the new PIN to be provided in the request body.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Method</strong>: POST</p>\n</li>\n<li><p><strong>Endpoint</strong>: <code>/user/changePin</code></p>\n</li>\n<li><p><strong>Content-Type</strong>: application/json</p>\n</li>\n</ul>\n<p><strong>Request Body Parameters</strong>:</p>\n<ul>\n<li><p><code>currentPin</code> (string): The user's current PIN that needs to be verified.</p>\n</li>\n<li><p><code>newPin</code> (string): The new PIN that the user wishes to set.</p>\n</li>\n</ul>\n<p><strong>Example Request Body</strong>:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"currentPin\": \"7337\",\n  \"newPin\": \"9513\"\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status Code</strong>: 200 OK</p>\n</li>\n<li><p><strong>Content-Type</strong>: application/json</p>\n</li>\n</ul>\n<p><strong>Response Body</strong>:</p>\n<ul>\n<li><code>message</code> (string): A message indicating the result of the operation. The message may be empty, but a successful operation will return a 200 status code.</li>\n</ul>\n<p><strong>Example Response</strong>:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"\"\n}\n\n</code></pre>\n<h4 id=\"notes\">Notes</h4>\n<ul>\n<li><p>Ensure that the current PIN is correct before attempting to change it to avoid errors.</p>\n</li>\n<li><p>The new PIN should meet any security requirements set by the application (e.g., length, complexity).</p>\n</li>\n<li><p>This endpoint may return similar structured responses as other endpoints within the API, which typically include a <code>message</code> field indicating the success or failure of the request.</p>\n</li>\n</ul>\n","urlObject":{"path":["user","changePin"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"9e5e72e3-02b3-4d33-8a0d-5cfa136b7f3a"}],"id":"b109adb5-74ee-43e4-899f-cfa937f6070c","_postman_id":"b109adb5-74ee-43e4-899f-cfa937f6070c","description":""}],"variable":[{"key":"URL","value":"","type":"default"}]}