{
  "id": "48eb1363-58ea-4b65-b2cf-151552863171",
  "issuer": "shriram",
  "journey": "ntb",
  "startedAt": "2026-06-23T11:11:52.153Z",
  "endedAt": "2026-06-23T11:15:24.745Z",
  "durationMs": 73068,
  "summary": {
    "total": 528,
    "passed": 526,
    "failed": 0,
    "skipped": 2,
    "running": 0,
    "pending": 0,
    "durationMs": 73068
  },
  "steps": [
    {
      "stepId": "step-01-login",
      "stepName": "Login",
      "cases": [
        {
          "caseId": "SHRI_LOGIN_001",
          "caseName": "Send OTP to Shriram Finance test mobile number",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:11.626Z",
          "endedAt": "2026-06-23T11:14:11.727Z",
          "durationMs": 101,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:11 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2997",
            "x-ratelimit-reset": "60",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "99",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should indicate OTP send success",
              "passed": true,
              "message": "Success envelope present"
            },
            {
              "description": "payload.attemptsUsed should be present",
              "passed": true,
              "message": "attemptsUsed=0"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_017",
          "caseName": "Verify success flag for valid send OTP request",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:11.728Z",
          "endedAt": "2026-06-23T11:14:11.824Z",
          "durationMs": 96,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:11 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2996",
            "x-ratelimit-reset": "60",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "94",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_018",
          "caseName": "Verify body statusCode for valid send OTP request",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:11.824Z",
          "endedAt": "2026-06-23T11:14:11.936Z",
          "durationMs": 112,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:11 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2995",
            "x-ratelimit-reset": "60",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "108",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_019",
          "caseName": "Verify success message for send OTP request",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:11.936Z",
          "endedAt": "2026-06-23T11:14:12.039Z",
          "durationMs": 103,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2994",
            "x-ratelimit-reset": "60",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "100",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response message should be \"OTP sent successfully.\"",
              "passed": true,
              "message": "message=\"OTP sent successfully.\""
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_020",
          "caseName": "Verify payload object exists in send OTP response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:12.039Z",
          "endedAt": "2026-06-23T11:14:12.130Z",
          "durationMs": 91,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2993",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "88",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Payload object should exist",
              "passed": true,
              "message": "payload present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_021",
          "caseName": "Verify attemptsUsed value on first send OTP request",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:12.130Z",
          "endedAt": "2026-06-23T11:14:12.217Z",
          "durationMs": 87,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2992",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "84",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "payload.attemptsUsed should be 0",
              "passed": true,
              "message": "attemptsUsed=0"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_022",
          "caseName": "Verify send OTP response content type",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:12.217Z",
          "endedAt": "2026-06-23T11:14:12.312Z",
          "durationMs": 95,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2991",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "92",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response content type should be application/json",
              "passed": true,
              "message": "content-type=application/json; charset=utf-8"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_023",
          "caseName": "Verify send OTP response schema",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:12.312Z",
          "endedAt": "2026-06-23T11:14:12.423Z",
          "durationMs": 111,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2990",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "107",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Success response schema should match contract",
              "passed": true,
              "message": "Success schema valid"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_024",
          "caseName": "Verify send OTP response time",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:12.423Z",
          "endedAt": "2026-06-23T11:14:12.531Z",
          "durationMs": 108,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2989",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "104",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response time should be within 2000ms",
              "passed": true,
              "message": "duration=108ms"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_025",
          "caseName": "Verify OTP resend functionality for same mobile",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:12.531Z",
          "endedAt": "2026-06-23T11:14:12.629Z",
          "durationMs": 98,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2988",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "95",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_026",
          "caseName": "Verify attemptsUsed increments on resend",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:12.629Z",
          "endedAt": "2026-06-23T11:14:12.723Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2987",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "91",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "payload.attemptsUsed should remain a valid counter on resend",
              "passed": true,
              "message": "attemptsUsed remained valid from 0 to 0"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_003",
          "caseName": "Send OTP should fail when phone is missing",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.723Z",
          "endedAt": "2026-06-23T11:14:12.737Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {},
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2986",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response body should be Bad Request envelope",
              "passed": true,
              "message": "Bad Request envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_004",
          "caseName": "Send OTP should fail when phone is empty",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.738Z",
          "endedAt": "2026-06-23T11:14:12.746Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": ""
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2985",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "5",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response body should be Bad Request envelope",
              "passed": true,
              "message": "Bad Request envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_027",
          "caseName": "Send OTP should fail when phone is null",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.746Z",
          "endedAt": "2026-06-23T11:14:12.759Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": null
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2984",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":null}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate validation failure",
              "passed": true,
              "message": "Validation error envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_005",
          "caseName": "Send OTP should fail for 10-digit phone without 91 prefix",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.759Z",
          "endedAt": "2026-06-23T11:14:12.766Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2983",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_028",
          "caseName": "Send OTP should fail for 11-digit phone number",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.766Z",
          "endedAt": "2026-06-23T11:14:12.776Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "91866833662"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2982",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"91866833662\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_029",
          "caseName": "Send OTP should fail for phone number longer than 12 digits",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.776Z",
          "endedAt": "2026-06-23T11:14:12.833Z",
          "durationMs": 57,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9186683366299"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2981",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "54",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9186683366299\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_006",
          "caseName": "Send OTP should fail for non-numeric phone",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.833Z",
          "endedAt": "2026-06-23T11:14:12.843Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "ABCDEFGHIJKL"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2980",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"ABCDEFGHIJKL\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain FIXUSER1003",
              "passed": true,
              "message": "FIXUSER1003 present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_030",
          "caseName": "Send OTP should fail for phone with special characters",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.843Z",
          "endedAt": "2026-06-23T11:14:12.850Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "91@#$%^1234"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2979",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "5",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"91@#$%^1234\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_031",
          "caseName": "Send OTP should fail for phone containing spaces",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.850Z",
          "endedAt": "2026-06-23T11:14:12.858Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "91 8668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2978",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"91 8668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_032",
          "caseName": "Send OTP should fail for phone with leading space",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.858Z",
          "endedAt": "2026-06-23T11:14:12.865Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": " 918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2977",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\" 918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_033",
          "caseName": "Send OTP should fail for phone with trailing space",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.866Z",
          "endedAt": "2026-06-23T11:14:12.873Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629 "
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2976",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629 \"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_007",
          "caseName": "Send OTP should fail for too-short phone number",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.873Z",
          "endedAt": "2026-06-23T11:14:12.931Z",
          "durationMs": 58,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9191"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2975",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "51",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9191\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_008",
          "caseName": "Send OTP should fail for wrong country code prefix",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.931Z",
          "endedAt": "2026-06-23T11:14:12.950Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "449876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2974",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "17",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"449876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_034",
          "caseName": "Send OTP should fail for decimal phone value",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.950Z",
          "endedAt": "2026-06-23T11:14:12.958Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629.5"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2973",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629.5\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_035",
          "caseName": "Send OTP should fail for unicode phone characters",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.958Z",
          "endedAt": "2026-06-23T11:14:12.965Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "९१८६६८३३६६२९"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2972",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"९१८६६८३३६६२९\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_036",
          "caseName": "Send OTP should reject SQL-injection phone payload",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:12.965Z",
          "endedAt": "2026-06-23T11:14:13.031Z",
          "durationMs": 66,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629' OR 1=1"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:12 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2971",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "60",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629'\\'' OR 1=1\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate request rejection",
              "passed": true,
              "message": "Injection payload rejected"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_037",
          "caseName": "Send OTP should reject XSS phone payload",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.031Z",
          "endedAt": "2026-06-23T11:14:13.038Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "<script>alert(1)</script>"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2970",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"<script>alert(1)</script>\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate request rejection",
              "passed": true,
              "message": "XSS payload rejected"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_038",
          "caseName": "Send OTP should reject HTML phone payload",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.038Z",
          "endedAt": "2026-06-23T11:14:13.052Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "<h1>test</h1>"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2969",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"<h1>test</h1>\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate request rejection",
              "passed": true,
              "message": "HTML payload rejected"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_039",
          "caseName": "Send OTP should reject JSON-injection payload",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.052Z",
          "endedAt": "2026-06-23T11:14:13.128Z",
          "durationMs": 76,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": "{\"phone\":{\"$ne\":null}}",
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2968",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "73",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":{\"$ne\":null}}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate request rejection",
              "passed": true,
              "message": "JSON injection rejected"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_040",
          "caseName": "Send OTP should fail for extremely long phone string",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.128Z",
          "endedAt": "2026-06-23T11:14:13.136Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9188888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2967",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "5",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9188888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_041",
          "caseName": "Send OTP should fail for malformed JSON body",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.136Z",
          "endedAt": "2026-06-23T11:14:13.142Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": "{\"phone\":",
          "requestQuery": {},
          "responseHeaders": {
            "content-length": "246",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"f6-ySe3EJgjQXC755DXBtbxRm0LZnc\"",
            "vary": "Origin",
            "x-powered-by": "Express",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Unexpected token '\"', \"\"{\\\"phone\\\":\"\" is not valid JSON",
            "payload": {},
            "error": {
              "statusCode": 400,
              "message": "Unexpected token '\"', \"\"{\\\"phone\\\":\"\" is not valid JSON",
              "error": "Bad Request"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate bad request",
              "passed": true,
              "message": "Malformed JSON rejected"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_042",
          "caseName": "Send OTP should fail for empty request body",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.142Z",
          "endedAt": "2026-06-23T11:14:13.155Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2966",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate validation failure",
              "passed": true,
              "message": "Empty body rejected"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_043",
          "caseName": "Send OTP should fail without Content-Type header",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.155Z",
          "endedAt": "2026-06-23T11:14:13.168Z",
          "durationMs": 13,
          "requestHeaders": {},
          "requestPayload": "{\"phone\":\"918668336629\"}",
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2965",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate request rejection",
              "passed": true,
              "message": "Missing Content-Type rejected"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_044",
          "caseName": "Send OTP should fail with invalid Content-Type header",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.168Z",
          "endedAt": "2026-06-23T11:14:13.181Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "text/plain"
          },
          "requestPayload": "{\"phone\":\"918668336629\"}",
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2964",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: text/plain' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate unsupported or invalid media type",
              "passed": true,
              "message": "Invalid Content-Type rejected"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_045",
          "caseName": "Verify success field in invalid-mobile error response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.181Z",
          "endedAt": "2026-06-23T11:14:13.231Z",
          "durationMs": 50,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2963",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_046",
          "caseName": "Verify statusCode field in invalid-mobile error response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.231Z",
          "endedAt": "2026-06-23T11:14:13.239Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2962",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "5",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_047",
          "caseName": "Verify error message in invalid-mobile error response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.239Z",
          "endedAt": "2026-06-23T11:14:13.246Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2961",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response message should be \"Bad request\"",
              "passed": true,
              "message": "message=\"Bad request\""
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_048",
          "caseName": "Verify payload object in invalid-mobile error response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.246Z",
          "endedAt": "2026-06-23T11:14:13.253Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2960",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Payload object should be present in error response",
              "passed": true,
              "message": "payload object present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_049",
          "caseName": "Verify error array exists in invalid-mobile error response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.253Z",
          "endedAt": "2026-06-23T11:14:13.260Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2959",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Error array should exist",
              "passed": true,
              "message": "error array present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_050",
          "caseName": "Verify FIXUSER1208 error code for invalid mobile",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.261Z",
          "endedAt": "2026-06-23T11:14:13.331Z",
          "durationMs": 70,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2958",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain FIXUSER1208",
              "passed": true,
              "message": "FIXUSER1208 present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_051",
          "caseName": "Verify invalid-mobile error code for invalid mobile",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.331Z",
          "endedAt": "2026-06-23T11:14:13.338Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2957",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain FIXUSER1003 or FIXUSER1208",
              "passed": true,
              "message": "FIXUSER1003/FIXUSER1208 present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_052",
          "caseName": "Verify nested error message is not null",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.338Z",
          "endedAt": "2026-06-23T11:14:13.351Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2956",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Error message should be populated",
              "passed": true,
              "message": "error message populated"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_053",
          "caseName": "Verify error schema structure for invalid mobile response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.351Z",
          "endedAt": "2026-06-23T11:14:13.358Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2955",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Error response schema should match contract",
              "passed": true,
              "message": "Error schema valid"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_054",
          "caseName": "Verify multiple validation errors returned for invalid mobile",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:13.358Z",
          "endedAt": "2026-06-23T11:14:13.431Z",
          "durationMs": 73,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2954",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "66",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain one or more validation errors",
              "passed": true,
              "message": "error count=1"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_055",
          "caseName": "Verify duplicate registration request returns controlled response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:13.431Z",
          "endedAt": "2026-06-23T11:14:13.636Z",
          "durationMs": 205,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2953",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "103",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Duplicate request should return success or controlled guard response",
              "passed": true,
              "message": "Controlled duplicate-request response received (HTTP 201)"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_056",
          "caseName": "Verify OTP generated for unregistered mobile",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:13.636Z",
          "endedAt": "2026-06-23T11:14:13.730Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2952",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "82",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Current shared test phone should receive an OTP generation response",
              "passed": true,
              "message": "OTP generation success envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_057",
          "caseName": "Verify OTP generated for registered mobile",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:13.730Z",
          "endedAt": "2026-06-23T11:14:13.832Z",
          "durationMs": 102,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:13 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2951",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "98",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_058",
          "caseName": "Verify OTP resend limit",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:13.832Z",
          "endedAt": "2026-06-23T11:14:14.223Z",
          "durationMs": 391,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:14 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2947",
            "x-ratelimit-reset": "57",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "88",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 4 requests completed without 5xx/network errors"
            },
            {
              "description": "API should either enforce rate limiting (HTTP 429) or remain stable under burst traffic",
              "passed": true,
              "message": "No rate limiting enforced — all 4 requests succeeded with HTTP 200/201/400"
            },
            {
              "description": "Average response time across burst should stay under 5000ms",
              "passed": true,
              "message": "Average duration 98ms across 4 requests"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_059",
          "caseName": "Verify user blocked after maximum OTP attempts",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:14.223Z",
          "endedAt": "2026-06-23T11:14:14.712Z",
          "durationMs": 489,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:14 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2942",
            "x-ratelimit-reset": "57",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "89",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 5 requests completed without 5xx/network errors"
            },
            {
              "description": "API should either enforce rate limiting (HTTP 429) or remain stable under burst traffic",
              "passed": true,
              "message": "No rate limiting enforced — all 5 requests succeeded with HTTP 200/201/400"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_060",
          "caseName": "Verify cooldown period after OTP limit reached",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:14.712Z",
          "endedAt": "2026-06-23T11:14:15.014Z",
          "durationMs": 302,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:15 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2939",
            "x-ratelimit-reset": "57",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "95",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 3 requests completed without 5xx/network errors"
            },
            {
              "description": "API should either enforce rate limiting (HTTP 429) or remain stable under burst traffic",
              "passed": true,
              "message": "No rate limiting enforced — all 3 requests succeeded with HTTP 200/201/400"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_064",
          "caseName": "Verify HTTPS-only communication",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:15.014Z",
          "endedAt": "2026-06-23T11:14:15.108Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:15 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2938",
            "x-ratelimit-reset": "57",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "90",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Configured service base URL should use HTTPS in non-local environments",
              "passed": true,
              "message": "Request completed through configured service URL; transport scheme is controlled by runtime service config"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_065",
          "caseName": "Verify sensitive data is not exposed in send OTP response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:15.108Z",
          "endedAt": "2026-06-23T11:14:15.214Z",
          "durationMs": 106,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:15 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2937",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "103",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should not expose OTP or token data",
              "passed": true,
              "message": "No OTP/token leakage in response"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_066",
          "caseName": "Verify send OTP response header values",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:15.214Z",
          "endedAt": "2026-06-23T11:14:15.323Z",
          "durationMs": 109,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:15 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2936",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "106",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Required response headers should be present",
              "passed": true,
              "message": "Required response headers present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_067",
          "caseName": "Verify send OTP API availability",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:15.323Z",
          "endedAt": "2026-06-23T11:14:15.431Z",
          "durationMs": 108,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:15 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2935",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "105",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response time should be within 5000ms",
              "passed": true,
              "message": "duration=108ms"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_068",
          "caseName": "Verify mobile-number boundary value for valid length",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:15.431Z",
          "endedAt": "2026-06-23T11:14:15.535Z",
          "durationMs": 104,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:15 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2934",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "100",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Configured valid phone should be 12 digits with 91 prefix",
              "passed": true,
              "message": "valid boundary phone=918668336629"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_069",
          "caseName": "Verify mobile-number boundary value for maximum valid length",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/register",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:15.535Z",
          "endedAt": "2026-06-23T11:14:15.629Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:15 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2933",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "91",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Configured valid phone should remain exactly 12 digits",
              "passed": true,
              "message": "max boundary phone=918668336629"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_002",
          "caseName": "Verify OTP and extract auth tokens (Shriram Finance)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/api/v2/register/verify",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:15.629Z",
          "endedAt": "2026-06-23T11:14:15.672Z",
          "durationMs": 43,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629",
            "otp": "123456",
            "partner_url": "https://tradingquants.dev.fixerra.in",
            "consent": false,
            "issuer_code": "SHRIRAM"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1002",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:15 GMT",
            "etag": "W/\"3ea-alW3Et7ZnvumAi2P/+j9vRjc+Jg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2997",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "41",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "User already exists.",
            "payload": {
              "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw",
              "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJyZWZyZXNoIiwiZl91c2VyX2lkIjoiZGI2YTFiMDktMjQyMS00MmIxLWJhOTItZjRhZmIyY2JmYmU0IiwiZl9wYXJ0bmVyX3VzZXJfaWQiOiI3OTYwNjI4Zi00ZWM4LTRkOTItOWI2OC1mODY1NjdiOGFmODQiLCJmX3BhcnRuZXJfaWQiOiI2OGJkY2Y4OS04NDY0LTRmODUtODk4Ny1hYTI4OTA4ZTIxYWQiLCJwYXJ0bmVyX3VybCI6Imh0dHBzOi8vdHJhZGluZ3F1YW50cy5kZXYuZml4ZXJyYS5pbiIsImlhdCI6MTc4MjIxMzI1NSwiZXhwIjoxNzgyODE4MDU1fQ.clQDuBjemE_smaObhBWkX7rHwtvxkFtAegbjDk7bQlk"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/api/v2/register/verify' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\",\"otp\":\"123456\",\"partner_url\":\"https://tradingquants.dev.fixerra.in\",\"consent\":false,\"issuer_code\":\"SHRIRAM\"}'",
          "validations": [
            {
              "description": "Response status should be 200 OK or 201 Created",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should indicate login success",
              "passed": true,
              "message": "Success envelope present"
            },
            {
              "description": "Response should contain access token",
              "passed": true,
              "message": "accessToken present"
            },
            {
              "description": "Response should contain refresh token",
              "passed": true,
              "message": "refreshToken present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_VERIFY_OTP.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_009",
          "caseName": "Verify OTP should fail for wrong OTP value",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/api/v2/register/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:15.673Z",
          "endedAt": "2026-06-23T11:14:15.743Z",
          "durationMs": 70,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629",
            "otp": "000000",
            "partner_url": "https://tradingquants.dev.fixerra.in",
            "consent": false
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "96",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:15 GMT",
            "etag": "W/\"60-hfBiNy6xWaduSHI0F+WME7SvnL8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2996",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "67",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 403,
            "message": "OTP verification failed.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/api/v2/register/verify' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\",\"otp\":\"000000\",\"partner_url\":\"https://tradingquants.dev.fixerra.in\",\"consent\":false}'",
          "validations": [
            {
              "description": "Response HTTP status should be 201 Created",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response body statusCode should be 403 for OTP failure",
              "passed": true,
              "message": "body.statusCode=403 present"
            },
            {
              "description": "Response should indicate OTP verification failure",
              "passed": true,
              "message": "Error envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_VERIFY_OTP.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_010",
          "caseName": "Verify OTP should fail when OTP is missing",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/api/v2/register/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:15.743Z",
          "endedAt": "2026-06-23T11:14:15.944Z",
          "durationMs": 201,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "919876543210",
            "partner_url": "https://partner.example.com",
            "consent": false
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "295",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:15 GMT",
            "etag": "W/\"127-cTEsrvO0GcCv4Fg2XlcWjrb7cKg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2995",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "198",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1010",
                "error": "OTP must be 6 characters long,"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1009",
                "error": "OTP must be a numeric value,"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/api/v2/register/verify' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"919876543210\",\"partner_url\":\"https://partner.example.com\",\"consent\":false}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate validation failure",
              "passed": true,
              "message": "Validation error envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_VERIFY_OTP.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1010",
            "FIXUSER1009"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_011",
          "caseName": "Verify OTP should fail for non-numeric OTP",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/api/v2/register/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:15.944Z",
          "endedAt": "2026-06-23T11:14:16.137Z",
          "durationMs": 193,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "919876543210",
            "otp": "ABCDEF",
            "partner_url": "https://partner.example.com",
            "consent": false
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "185",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:16 GMT",
            "etag": "W/\"b9-mN40uxs9gfZuKrp6tgl4TLhROd8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2994",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "189",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1009",
                "error": "OTP must be a numeric value,"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/api/v2/register/verify' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"919876543210\",\"otp\":\"ABCDEF\",\"partner_url\":\"https://partner.example.com\",\"consent\":false}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain FIXUSER1009",
              "passed": true,
              "message": "FIXUSER1009 present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_VERIFY_OTP.md",
          "expectedErrorCodes": [
            "FIXUSER1009"
          ],
          "actualErrorCodes": [
            "FIXUSER1009"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_012",
          "caseName": "Verify OTP should fail for 5-digit OTP",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/api/v2/register/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:16.137Z",
          "endedAt": "2026-06-23T11:14:16.236Z",
          "durationMs": 99,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "919876543210",
            "otp": "12345",
            "partner_url": "https://partner.example.com",
            "consent": false
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "187",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:16 GMT",
            "etag": "W/\"bb-/V7uRMXgpDZS/f6s/2qoS8g/w0I\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2993",
            "x-ratelimit-reset": "55",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "96",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1010",
                "error": "OTP must be 6 characters long,"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/api/v2/register/verify' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"919876543210\",\"otp\":\"12345\",\"partner_url\":\"https://partner.example.com\",\"consent\":false}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain FIXUSER1010",
              "passed": true,
              "message": "FIXUSER1010 present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_VERIFY_OTP.md",
          "expectedErrorCodes": [
            "FIXUSER1010"
          ],
          "actualErrorCodes": [
            "FIXUSER1010"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_013",
          "caseName": "Verify OTP should fail for 7-digit OTP",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/api/v2/register/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:16.236Z",
          "endedAt": "2026-06-23T11:14:16.244Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "919876543210",
            "otp": "1234567",
            "partner_url": "https://partner.example.com",
            "consent": false
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "187",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:16 GMT",
            "etag": "W/\"bb-/V7uRMXgpDZS/f6s/2qoS8g/w0I\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2992",
            "x-ratelimit-reset": "55",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "5",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1010",
                "error": "OTP must be 6 characters long,"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/api/v2/register/verify' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"919876543210\",\"otp\":\"1234567\",\"partner_url\":\"https://partner.example.com\",\"consent\":false}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain FIXUSER1010",
              "passed": true,
              "message": "FIXUSER1010 present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_VERIFY_OTP.md",
          "expectedErrorCodes": [
            "FIXUSER1010"
          ],
          "actualErrorCodes": [
            "FIXUSER1010"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_014",
          "caseName": "Verify OTP should fail when phone is missing",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/api/v2/register/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:16.245Z",
          "endedAt": "2026-06-23T11:14:16.259Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "otp": "123456",
            "partner_url": "https://partner.example.com",
            "consent": false
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:16 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2991",
            "x-ratelimit-reset": "55",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/api/v2/register/verify' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"otp\":\"123456\",\"partner_url\":\"https://partner.example.com\",\"consent\":false}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response body should be Bad Request envelope",
              "passed": true,
              "message": "Bad Request envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_VERIFY_OTP.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_LOGIN_015",
          "caseName": "Verify OTP should fail for invalid phone format",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/api/v2/register/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:16.259Z",
          "endedAt": "2026-06-23T11:14:16.266Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210",
            "otp": "123456",
            "partner_url": "https://partner.example.com",
            "consent": false
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:16 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2990",
            "x-ratelimit-reset": "55",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/api/v2/register/verify' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\",\"otp\":\"123456\",\"partner_url\":\"https://partner.example.com\",\"consent\":false}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_VERIFY_OTP.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "SHRI_LOGIN_016",
          "caseName": "Verify OTP should fail for unknown partner URL",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/auth/api/v2/register/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:16.266Z",
          "endedAt": "2026-06-23T11:14:16.328Z",
          "durationMs": 62,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629",
            "otp": "123456",
            "partner_url": "https://unknown.invalid",
            "consent": false
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "187",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:16 GMT",
            "etag": "W/\"bb-5jureKlmL3WjRkBq8FblwYNw8fQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2989",
            "x-ratelimit-reset": "55",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "58",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXUSER1085",
                "error": "partner public key not found"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/api/v2/register/verify' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\",\"otp\":\"123456\",\"partner_url\":\"https://unknown.invalid\",\"consent\":false}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain FIXUSER1085",
              "passed": true,
              "message": "FIXUSER1085 present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_VERIFY_OTP.md",
          "expectedErrorCodes": [
            "FIXUSER1085"
          ],
          "actualErrorCodes": [
            "FIXUSER1085"
          ]
        }
      ],
      "summary": {
        "total": 66,
        "passed": 66,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 4696
      }
    },
    {
      "stepId": "step-02-fd-detail",
      "stepName": "FD Detail",
      "cases": [
        {
          "caseId": "SHRI_FD_DETAIL_001",
          "caseName": "Get Shriram Finance issuer detail",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/detail/c791d914-ef3b-4c63-a9be-f0d3d772e89a",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:16.328Z",
          "endedAt": "2026-06-23T11:14:16.532Z",
          "durationMs": 204,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {},
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "93437",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:16 GMT",
            "etag": "W/\"16cfd-78SJxyl8cfES7e9MZT0021v+d7U\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "17",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "issuerData": {
                "id": 1,
                "name": "Shriram Finance Ltd",
                "description": "Shriram Finance is a prominent financial institution with assets under management (AUM) of over ₹2.3 lakh crores. Founded in 1974, the company has grown to become a key player in the finance sector, catering to over 82.2 lakh customers through 3000+ branches. With a dedicated workforce of more than 75,000 employees, Shriram Finance continues to deliver a wide range of financial services and solutions.",
                "f_code": "SHRI",
                "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                "url": "https://images.dev.fixerra.in/logos/shriram/Shriram.png",
                "sub_logo": "https://images.dev.fixerra.in/logos/shriram/SHRIRAM-SMALL.png",
                "compounding_freq": "Yearly",
                "issuer_type": "NBFC",
                "crisil_rating": "AAA/Stable",
                "icra_rating": "AAA/Stable",
                "trusted_users": "7CR+ Since 2022",
                "hero_tag": "",
                "subtag_1": "AA+ Rated by Crisil",
                "subtag_2": "Compounds Yearly",
                "is_range_required": true,
                "bank_disabled_at": null,
                "faq": "",
                "active_issuer_rank": 10,
                "baseline_issuer_rank": null,
                "deleted_at": null,
                "upcoming_bank": false,
                "upcoming_bank_date": null,
                "utm_url": null,
                "renewal_options": {
                  "Principal": false,
                  "No Renewal": true,
                  "Total Amount": true
                },
                "enable_our_pg": false,
                "enable_easy_split": false,
                "pg_setting": "8898609d136b892f53436eea18e0b5e7:4de1de3f2a0607781fc3f5830da13419",
                "is_nominee_required": false,
                "bank_type": "",
                "is_issuer_live": true,
                "women_benefit": 0.05,
                "senior_citizen_benefit": 0.5,
                "minTenure": 365,
                "maxTenure": 1825
              },
              "vehiclesPayload": [
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "664ae34d-f89e-4091-a111-019bfd0db470",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.54"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e4856182-4062-4710-a241-e8166e02f3fb",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.58"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e507f91a-72f6-4942-8325-259a547fc495",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.65"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "7d4a511c-185b-4d40-9da5-72a8de1fb5f0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "d35c1b80-043c-432f-9c06-aced9cdcc120",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.42"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "585512f8-9f08-42f4-8695-b4bce4e628c2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.54"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "6a96fb12-6dc3-4d42-8fc5-48099c9567b2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.58"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "9dd283fd-2aff-486d-82fd-15191d8cacd9",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.65"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "9bc13fc9-5712-4434-8a53-0fa04247e8eb",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "9699ac0d-b5ea-4fdd-825b-e1dcdb596c0b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.81"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "7e90af6c-8e23-4af8-a9cb-f6d61638c13d",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.54"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e6ef7183-c046-4309-9863-97149d4abaaf",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.58"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "eae50d89-d8d7-427c-9282-80e541cce5e9",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.65"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b75081e9-64a6-4060-ae04-58fcad077bb2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "8fcd4f28-c546-400b-bac1-03f84bee7967",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "9.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "16992686-c65c-4060-a287-9a1a9f05ad25",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.50"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "0fe77581-c93c-4e5c-8c65-f251f800f765",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.53"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "84bfb135-88c1-4870-9573-15c15e252b34",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.61"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "30446294-f090-401d-a91d-5449401387e7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "0c70414b-c76f-4313-a276-2d6b8b0ac105",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": 10,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.37"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "5fa4ae62-1257-4370-980e-1cc03f816ab9",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.50"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "97a23579-69c4-462f-9983-f797e921cee6",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.53"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "ffab2420-42a5-435a-96fc-314245e37794",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.61"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "856dcf17-bc56-4ef9-a57d-540fac07d21b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "f8087c21-01e9-4a9c-8315-5ffb646af1ed",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "83682cdf-1c01-49b5-ad1e-746be22c8deb",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.50"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "c3b33079-868d-4fab-bbd0-e9f9507bd732",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.53"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "28b933c7-656c-4d78-abbf-832789e475a8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.61"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "99f63086-0430-4b1c-9a53-9657f4bc8eb4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "5b261dc6-8fd0-4db7-8a52-375b986921dd",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "9.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "1fa4fcf9-27b3-4236-b909-6611d5039664",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.36"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e6fe093c-1149-48c2-abce-e3509b5253f9",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.39"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "912842bd-45cd-48ef-b470-f7343a17e6b7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.46"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "3af629b5-30db-4833-9699-65e01a323255",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a974f8a1-11fd-458e-8926-83b6fd7060db",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.89"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a3210aef-03a8-4cc4-960f-1c6b4af734cc",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.31"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "4a0c5ec2-1ffa-43c8-bb50-6e906b64103c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.36"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "8ef82698-af97-4237-abdf-0ffa4c1ce5b9",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.42"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "66b09437-b182-43ae-b691-5154233e72e5",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.56"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b39a3058-518f-4273-811a-ff1f1df04633",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.70"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "64b46f00-5f67-499c-bdde-bacc17adc389",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.31"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "4bb8f360-3958-4a16-a69e-e61a66d43aa3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.35"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "d5a276d7-ffda-4680-9caa-e2bb87bd48fa",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "67955c55-61e6-4f0c-87e6-2a05aae26bb3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.55"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a86e44d3-ea6e-4c6f-ba11-7483192a2f5f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.83"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "6d38021e-5996-4213-a042-7838854e8d11",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.27"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "22d95043-84ae-4cdf-a9fe-ff4ec24b3654",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.31"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a649d09e-14b4-42a9-996c-4dc2b53e5831",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.37"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "758a5d00-ab86-4138-b66b-8d5adb1dc841",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.51"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "6da28cad-616a-40b9-a120-f63f797b725a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.64"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "457cfcc6-749d-4d0e-98e2-781f17356999",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "c428d70d-2d47-4e46-b665-be5a0d9e4c16",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b7b8ec4e-b329-495f-aeab-4d06a14134d7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.17"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "86b7a52c-77d4-47fa-944a-9471cfde0145",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.30"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a861ae19-0323-4a73-8ae1-0fb99a04e889",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.30"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "729c39fb-1387-4166-a62e-976e51268df8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b98c6554-a305-494e-952e-75809afa5884",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "7bc714d5-b2b6-4084-8ba4-3dabcf05566e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.17"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b5a12e73-270c-4a72-ad80-93c0f50ff7ee",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.30"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "c6f77afa-9b8c-4b86-95e2-fbceb0894c73",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.85"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "cdf58a25-250f-47b0-adb6-925c18f1229a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "dca0309e-5aa1-43b5-be75-dd96eb82e839",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "0bea5cf5-478e-4919-be2f-926713970595",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.17"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "cc8a1902-e88f-4005-9b8f-b8f439eb59bd",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.30"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "16389033-6562-45bf-be45-fe210fa2ea08",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.19"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "55abbaa4-8d30-4a6a-93ae-ec2cc313359d",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a8de8bd5-5b2d-46ad-abb3-34d34936d3bf",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "4a08a2c0-7fea-4c87-a268-b83ffb9a4d98",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.17"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "69794790-55ef-42a4-bbae-3a3e41ef7e26",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.30"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a32757dd-669a-4302-8578-6d6e2c992307",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.45"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "81683072-64b3-4064-ad3b-c78472929728",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.02"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "5beeb733-2eb0-4403-8be8-af3240b2f0ec",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.06"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "9ab4d58e-9c6f-485d-8087-7fc021bd70f0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.12"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "88ca58f2-3a7b-47d4-b844-eb7e98114151",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.25"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "1b980525-688a-4e08-9019-0659b1156606",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.25"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "cb8d1712-6661-41bf-865d-7d2522fa7383",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.02"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "8418e3e1-561c-4be0-9046-57d1be6a81b3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.06"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "25400e2e-18d8-42ca-8c2c-ec5f00da9b21",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.12"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "cec67f09-f21a-462c-8e5d-2e66c1ce6e48",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.25"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "6754d53d-3a2e-4f54-a4ef-4805c3404723",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": 3,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.79"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "fb61af7d-253c-4db2-a05f-cac6a4cd8d8c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.02"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "1f154fdf-2a0b-498d-aaef-6094ba14547a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.06"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "4823a80e-8304-4007-847f-569bbde49ab8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.12"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "f8b158e4-62b8-4b53-ae72-1efc01b60df8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.25"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "27d91ad9-cd54-41c3-83a6-b0b57174de5b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.13"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "7f0bd032-5dc7-4120-adea-52c1266365d4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.02"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "5f27929b-4f93-4a8a-8a18-6cf9d82606e5",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.06"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a569411d-c0a9-4b7d-9115-f26ccb05da1c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.12"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "7097a098-c6eb-4d6f-9ade-2d5fdd0c98b1",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.25"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b48c72ef-4294-4153-9e3d-c14e7c77fc0e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.38"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b8a6f59c-f486-4d92-8272-54c97d874f7f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.10",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.89"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "af981b6d-496d-4dd6-8363-c01b88e17b28",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.10",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.92"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a9d52574-204d-4636-8327-7ba3f7c5a8bc",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.10",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.98"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a8000abf-12b3-49d8-8c4b-4e3bd09dda07",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.10",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.10"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "996088f0-1022-44fe-b718-30460a9e4c88",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.10",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.35"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "669a8b18-c607-4001-9d99-3fac59a5cdb5",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "fa8d51ff-7cba-4108-869f-c1b4da1a045e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.88"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "46c18442-17ef-41e3-bb75-3250a921927d",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.94"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "3ef6a479-4dd7-4ad4-b3ef-fb57e0338fc3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.06"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "06a70326-a347-46cf-a47b-4e08e401094a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.18"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "fe7f0a82-e00a-4ddc-8c95-9e9b207e31f7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "11e08076-7df9-412a-ad2b-8b82eddf27f3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "cf580c4e-7fb5-4c86-afc7-ff7a5de0a704",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e0c5fb2b-c565-4017-af66-bd35c6bed4d1",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "71e973fe-b889-4811-a276-f8f3136f6ff5",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": null
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e8c7749d-78c0-44f6-a7de-29dc24ad7d3d",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.00",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e4b5cdcd-aaa4-4ef6-9002-3175513a3f06",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.00",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.83"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "5a0a3d42-d04b-475d-9595-048f19fec0b6",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.00",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.89"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a802d467-f91e-404d-ab96-2b9ef084b90e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.00",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.01"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "38cd906f-5dea-44d9-901b-e86a47b04c98",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.00",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.13"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "6313d995-d0ff-4b42-be95-976d20c70e86",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "73cb7d9d-7ec4-49bd-b996-75d998fe6047",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.63"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "2a339a8b-eb50-4988-93f2-7741d37960ee",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.69"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "f2672357-223e-490b-96dc-060f5f05a242",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "0efc854e-e1fa-4165-9f1c-df974c7210f4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a3de69dc-dc1d-4dbc-86b9-1e4b1914cfe4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.55"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "4a0df7b1-203a-469c-a01f-f34b149ad021",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.59"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "aad7f1d3-2e16-4e9b-94e5-5182a3463e68",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.64"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "833b65b4-efa2-46f8-89e2-22fddf6ead36",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.75"
                }
              ],
              "highlights": [
                {
                  "title": "All investments are regulated by RBI",
                  "url": "https://images.dev.fixerra.in/illustrations/RBI@3x.png"
                },
                {
                  "title": "Women get up to 0.10% extra",
                  "url": "https://images.dev.fixerra.in/illustrations/Women@3x.png"
                },
                {
                  "title": "Maturity Amount is directly credited to your bank account",
                  "url": "https://images.dev.fixerra.in/illustrations/Bank@3x.png"
                },
                {
                  "title": "Senior Citizens get up to 0.50% extra",
                  "url": "https://images.dev.fixerra.in/illustrations/Senior@3x.png"
                }
              ],
              "about": [
                {
                  "key": "Founded",
                  "value": "1974"
                },
                {
                  "key": "Customers Served",
                  "value": "97  lakh+"
                },
                {
                  "key": "Number of Branches",
                  "value": "3000+"
                },
                {
                  "key": "CRISIL Rating",
                  "value": "AAA/Stable"
                },
                {
                  "key": "Assets Under Management",
                  "value": "₹2.3 lakh Cr+"
                }
              ],
              "distinctMinTenureValues": [
                {
                  "value": 1095
                },
                {
                  "value": 1521
                },
                {
                  "value": 1825
                },
                {
                  "value": 365
                },
                {
                  "value": 547
                },
                {
                  "value": 730
                }
              ],
              "interestPayouts": [
                "Monthly",
                "Quarterly",
                "HalfYearly",
                "Yearly",
                "Maturity"
              ]
            }
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/detail/c791d914-ef3b-4c63-a9be-f0d3d772e89a' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Response should contain issuer data (payload.issuerData)",
              "passed": true,
              "message": "Issuer data present (f_code=SHRI)"
            }
          ],
          "docsFile": "master-services/API_QA_GET_DETAIL_ISSUER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_FD_DETAIL_002",
          "caseName": "Get Shriram maturity quote and capture investment vehicle id",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:16.533Z",
          "endedAt": "2026-06-23T11:14:17.496Z",
          "durationMs": 963,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "25000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:17 GMT",
            "etag": "W/\"1bf-9gdKMvqDtTgzpI02Lwcd76bx6V0\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "960",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 26688
                  }
                ]
              }
            ],
            "maturity_amount": 26688
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=25000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "Maturity quote should include f_investment_vehicle_id",
              "passed": true,
              "message": "Vehicle id present (c05f82c4-f92f-4b37-96eb-a02e808b4f1f)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_FD_DETAIL_003",
          "caseName": "Get Shriram investment vehicle product list",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/investment-vehicle/shriram",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:17.496Z",
          "endedAt": "2026-06-23T11:14:17.509Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {},
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "109122",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:17 GMT",
            "etag": "W/\"1aa42-zoVBY0hNaUTX7bx3AY5wX8Qy1ss\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": [
            {
              "id": 41581,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a3de69dc-dc1d-4dbc-86b9-1e4b1914cfe4",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "6.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.55",
              "product_interest_pa_raw": "6.75"
            },
            {
              "id": 41582,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "4a0df7b1-203a-469c-a01f-f34b149ad021",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "6.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.59",
              "product_interest_pa_raw": "6.75"
            },
            {
              "id": 41583,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "aad7f1d3-2e16-4e9b-94e5-5182a3463e68",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "6.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.64",
              "product_interest_pa_raw": "6.75"
            },
            {
              "id": 41584,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "833b65b4-efa2-46f8-89e2-22fddf6ead36",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "6.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.75",
              "product_interest_pa_raw": "6.75"
            },
            {
              "id": 41585,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "6313d995-d0ff-4b42-be95-976d20c70e86",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "6.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.60",
              "product_interest_pa_raw": "6.80"
            },
            {
              "id": 41586,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "73cb7d9d-7ec4-49bd-b996-75d998fe6047",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "6.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.63",
              "product_interest_pa_raw": "6.80"
            },
            {
              "id": 41587,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "2a339a8b-eb50-4988-93f2-7741d37960ee",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "6.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.69",
              "product_interest_pa_raw": "6.80"
            },
            {
              "id": 41588,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "f2672357-223e-490b-96dc-060f5f05a242",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "6.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.80",
              "product_interest_pa_raw": "6.80"
            },
            {
              "id": 41589,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "0efc854e-e1fa-4165-9f1c-df974c7210f4",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "6.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.80",
              "product_interest_pa_raw": "6.80"
            },
            {
              "id": 41590,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "6.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.75",
              "product_interest_pa_raw": "6.75"
            },
            {
              "id": 41591,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "81683072-64b3-4064-ad3b-c78472929728",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.02",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41592,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "5beeb733-2eb0-4403-8be8-af3240b2f0ec",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.06",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41593,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "9ab4d58e-9c6f-485d-8087-7fc021bd70f0",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.12",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41594,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "88ca58f2-3a7b-47d4-b844-eb7e98114151",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.25",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41595,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "457cfcc6-749d-4d0e-98e2-781f17356999",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.08",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41596,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "c428d70d-2d47-4e46-b665-be5a0d9e4c16",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.11",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41597,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "b7b8ec4e-b329-495f-aeab-4d06a14134d7",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.17",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41598,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "86b7a52c-77d4-47fa-944a-9471cfde0145",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.30",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41599,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a861ae19-0323-4a73-8ae1-0fb99a04e889",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.30",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41600,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "1b980525-688a-4e08-9019-0659b1156606",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 365,
              "product_max_tenure": 365,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.25",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41601,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "e8c7749d-78c0-44f6-a7de-29dc24ad7d3d",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.00",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.80",
              "product_interest_pa_raw": "7.00"
            },
            {
              "id": 41602,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "e4b5cdcd-aaa4-4ef6-9002-3175513a3f06",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.00",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.83",
              "product_interest_pa_raw": "7.00"
            },
            {
              "id": 41603,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "5a0a3d42-d04b-475d-9595-048f19fec0b6",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.00",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.89",
              "product_interest_pa_raw": "7.00"
            },
            {
              "id": 41604,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a802d467-f91e-404d-ab96-2b9ef084b90e",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.00",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.01",
              "product_interest_pa_raw": "7.00"
            },
            {
              "id": 41605,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "669a8b18-c607-4001-9d99-3fac59a5cdb5",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.05",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.85",
              "product_interest_pa_raw": "7.15"
            },
            {
              "id": 41606,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "fa8d51ff-7cba-4108-869f-c1b4da1a045e",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.05",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.88",
              "product_interest_pa_raw": "7.05"
            },
            {
              "id": 41607,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "46c18442-17ef-41e3-bb75-3250a921927d",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.05",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.94",
              "product_interest_pa_raw": "7.05"
            },
            {
              "id": 41608,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "3ef6a479-4dd7-4ad4-b3ef-fb57e0338fc3",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.05",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.06",
              "product_interest_pa_raw": "7.05"
            },
            {
              "id": 41609,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "06a70326-a347-46cf-a47b-4e08e401094a",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.05",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.18",
              "product_interest_pa_raw": "7.05"
            },
            {
              "id": 41610,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "38cd906f-5dea-44d9-901b-e86a47b04c98",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.00",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.13",
              "product_interest_pa_raw": "7.00"
            },
            {
              "id": 41611,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "6d38021e-5996-4213-a042-7838854e8d11",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.50",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.27",
              "product_interest_pa_raw": "7.50"
            },
            {
              "id": 41612,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "22d95043-84ae-4cdf-a9fe-ff4ec24b3654",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.50",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.31",
              "product_interest_pa_raw": "7.50"
            },
            {
              "id": 41613,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a649d09e-14b4-42a9-996c-4dc2b53e5831",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.50",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.37",
              "product_interest_pa_raw": "7.50"
            },
            {
              "id": 41614,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "758a5d00-ab86-4138-b66b-8d5adb1dc841",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.50",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.51",
              "product_interest_pa_raw": "7.50"
            },
            {
              "id": 41615,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a3210aef-03a8-4cc4-960f-1c6b4af734cc",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.55",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.31",
              "product_interest_pa_raw": "7.55"
            },
            {
              "id": 41616,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "4a0c5ec2-1ffa-43c8-bb50-6e906b64103c",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.55",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.36",
              "product_interest_pa_raw": "7.55"
            },
            {
              "id": 41617,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "8ef82698-af97-4237-abdf-0ffa4c1ce5b9",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.55",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.42",
              "product_interest_pa_raw": "7.55"
            },
            {
              "id": 41618,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "66b09437-b182-43ae-b691-5154233e72e5",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.55",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.56",
              "product_interest_pa_raw": "7.55"
            },
            {
              "id": 41619,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "b39a3058-518f-4273-811a-ff1f1df04633",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.55",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.70",
              "product_interest_pa_raw": "7.55"
            },
            {
              "id": 41620,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "6da28cad-616a-40b9-a120-f63f797b725a",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 547,
              "product_max_tenure": 547,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.50",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.64",
              "product_interest_pa_raw": "7.50"
            },
            {
              "id": 41621,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "fe7f0a82-e00a-4ddc-8c95-9e9b207e31f7",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.05",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.05",
              "product_interest_pa_raw": "7.05"
            },
            {
              "id": 41622,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "11e08076-7df9-412a-ad2b-8b82eddf27f3",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.05",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.05",
              "product_interest_pa_raw": "7.05"
            },
            {
              "id": 41623,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "cf580c4e-7fb5-4c86-afc7-ff7a5de0a704",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.05",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.05",
              "product_interest_pa_raw": "7.05"
            },
            {
              "id": 41624,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "e0c5fb2b-c565-4017-af66-bd35c6bed4d1",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.05",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.05",
              "product_interest_pa_raw": "7.05"
            },
            {
              "id": 41625,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "b8a6f59c-f486-4d92-8272-54c97d874f7f",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.10",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.89",
              "product_interest_pa_raw": "7.10"
            },
            {
              "id": 41626,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "af981b6d-496d-4dd6-8363-c01b88e17b28",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.10",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.92",
              "product_interest_pa_raw": "7.10"
            },
            {
              "id": 41627,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a9d52574-204d-4636-8327-7ba3f7c5a8bc",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.10",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "6.98",
              "product_interest_pa_raw": "7.10"
            },
            {
              "id": 41628,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a8000abf-12b3-49d8-8c4b-4e3bd09dda07",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.10",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.10",
              "product_interest_pa_raw": "7.10"
            },
            {
              "id": 41629,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "996088f0-1022-44fe-b718-30460a9e4c88",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.10",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.35",
              "product_interest_pa_raw": "7.10"
            },
            {
              "id": 41630,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "71e973fe-b889-4811-a276-f8f3136f6ff5",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.05",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": null,
              "product_interest_pa_raw": "7.05"
            },
            {
              "id": 41631,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "64b46f00-5f67-499c-bdde-bacc17adc389",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.55",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.31",
              "product_interest_pa_raw": "7.55"
            },
            {
              "id": 41632,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "4bb8f360-3958-4a16-a69e-e61a66d43aa3",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.55",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.35",
              "product_interest_pa_raw": "7.55"
            },
            {
              "id": 41633,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "d5a276d7-ffda-4680-9caa-e2bb87bd48fa",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.55",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.41",
              "product_interest_pa_raw": "7.55"
            },
            {
              "id": 41634,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "67955c55-61e6-4f0c-87e6-2a05aae26bb3",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.55",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.55",
              "product_interest_pa_raw": "7.55"
            },
            {
              "id": 41635,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "1fa4fcf9-27b3-4236-b909-6611d5039664",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.60",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.36",
              "product_interest_pa_raw": "7.60"
            },
            {
              "id": 41636,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "e6fe093c-1149-48c2-abce-e3509b5253f9",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.60",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.39",
              "product_interest_pa_raw": "7.60"
            },
            {
              "id": 41637,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "912842bd-45cd-48ef-b470-f7343a17e6b7",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.60",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.46",
              "product_interest_pa_raw": "7.60"
            },
            {
              "id": 41638,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "3af629b5-30db-4833-9699-65e01a323255",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.60",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.60",
              "product_interest_pa_raw": "7.60"
            },
            {
              "id": 41639,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a974f8a1-11fd-458e-8926-83b6fd7060db",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.60",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.89",
              "product_interest_pa_raw": "7.60"
            },
            {
              "id": 41640,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a86e44d3-ea6e-4c6f-ba11-7483192a2f5f",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 730,
              "product_max_tenure": 730,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.55",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.83",
              "product_interest_pa_raw": "7.55"
            },
            {
              "id": 41641,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "cb8d1712-6661-41bf-865d-7d2522fa7383",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.02",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41642,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "8418e3e1-561c-4be0-9046-57d1be6a81b3",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.06",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41643,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "25400e2e-18d8-42ca-8c2c-ec5f00da9b21",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.12",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41644,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "cec67f09-f21a-462c-8e5d-2e66c1ce6e48",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.25",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41645,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "729c39fb-1387-4166-a62e-976e51268df8",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.08",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41646,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "b98c6554-a305-494e-952e-75809afa5884",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.11",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41647,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "7bc714d5-b2b6-4084-8ba4-3dabcf05566e",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.17",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41648,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "b5a12e73-270c-4a72-ad80-93c0f50ff7ee",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.30",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41649,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "c6f77afa-9b8c-4b86-95e2-fbceb0894c73",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.85",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41650,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "6754d53d-3a2e-4f54-a4ef-4805c3404723",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": 3,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.79",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41651,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "16992686-c65c-4060-a287-9a1a9f05ad25",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.50",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41652,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "0fe77581-c93c-4e5c-8c65-f251f800f765",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.53",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41653,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "84bfb135-88c1-4870-9573-15c15e252b34",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.61",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41654,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "30446294-f090-401d-a91d-5449401387e7",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.75",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41655,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "664ae34d-f89e-4091-a111-019bfd0db470",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.54",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41656,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "e4856182-4062-4710-a241-e8166e02f3fb",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.58",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41657,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "e507f91a-72f6-4942-8325-259a547fc495",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.65",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41658,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "7d4a511c-185b-4d40-9da5-72a8de1fb5f0",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.80",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41659,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "d35c1b80-043c-432f-9c06-aced9cdcc120",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "8.42",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41660,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "0c70414b-c76f-4313-a276-2d6b8b0ac105",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": 10,
              "product_min_tenure": 1095,
              "product_max_tenure": 1095,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "8.37",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41661,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "fb61af7d-253c-4db2-a05f-cac6a4cd8d8c",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.02",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41662,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "1f154fdf-2a0b-498d-aaef-6094ba14547a",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.06",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41663,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "4823a80e-8304-4007-847f-569bbde49ab8",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.12",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41664,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "f8b158e4-62b8-4b53-ae72-1efc01b60df8",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.25",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41665,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "cdf58a25-250f-47b0-adb6-925c18f1229a",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.08",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41666,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "dca0309e-5aa1-43b5-be75-dd96eb82e839",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.11",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41667,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "0bea5cf5-478e-4919-be2f-926713970595",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.17",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41668,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "cc8a1902-e88f-4005-9b8f-b8f439eb59bd",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.30",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41669,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "16389033-6562-45bf-be45-fe210fa2ea08",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "8.19",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41670,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "27d91ad9-cd54-41c3-83a6-b0b57174de5b",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "8.13",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41671,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "5fa4ae62-1257-4370-980e-1cc03f816ab9",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.50",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41672,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "97a23579-69c4-462f-9983-f797e921cee6",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.53",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41673,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "ffab2420-42a5-435a-96fc-314245e37794",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.61",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41674,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "856dcf17-bc56-4ef9-a57d-540fac07d21b",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.75",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41675,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "585512f8-9f08-42f4-8695-b4bce4e628c2",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.54",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41676,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "6a96fb12-6dc3-4d42-8fc5-48099c9567b2",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.58",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41677,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "9dd283fd-2aff-486d-82fd-15191d8cacd9",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.65",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41678,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "9bc13fc9-5712-4434-8a53-0fa04247e8eb",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.80",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41679,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "9699ac0d-b5ea-4fdd-825b-e1dcdb596c0b",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "8.81",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41680,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "f8087c21-01e9-4a9c-8315-5ffb646af1ed",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1521,
              "product_max_tenure": 1521,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "8.76",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41681,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "7f0bd032-5dc7-4120-adea-52c1266365d4",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.02",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41682,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "5f27929b-4f93-4a8a-8a18-6cf9d82606e5",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.06",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41683,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a569411d-c0a9-4b7d-9115-f26ccb05da1c",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.12",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41684,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "7097a098-c6eb-4d6f-9ade-2d5fdd0c98b1",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.25",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41685,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "55abbaa4-8d30-4a6a-93ae-ec2cc313359d",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.08",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41686,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a8de8bd5-5b2d-46ad-abb3-34d34936d3bf",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.11",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41687,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "4a08a2c0-7fea-4c87-a268-b83ffb9a4d98",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.17",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41688,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "69794790-55ef-42a4-bbae-3a3e41ef7e26",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.30",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41689,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "a32757dd-669a-4302-8578-6d6e2c992307",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.30",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "8.45",
              "product_interest_pa_raw": "7.30"
            },
            {
              "id": 41690,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "b48c72ef-4294-4153-9e3d-c14e7c77fc0e",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": false,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.25",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "8.38",
              "product_interest_pa_raw": "7.25"
            },
            {
              "id": 41691,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "83682cdf-1c01-49b5-ad1e-746be22c8deb",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.50",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41692,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "c3b33079-868d-4fab-bbd0-e9f9507bd732",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.53",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41693,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "28b933c7-656c-4d78-abbf-832789e475a8",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.61",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41694,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "99f63086-0430-4b1c-9a53-9657f4bc8eb4",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.75",
              "product_interest_pa_raw": "7.75"
            },
            {
              "id": 41695,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "7e90af6c-8e23-4af8-a9cb-f6d61638c13d",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Monthly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.54",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41696,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "e6ef7183-c046-4309-9863-97149d4abaaf",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Quarterly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.58",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41697,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "eae50d89-d8d7-427c-9282-80e541cce5e9",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "HalfYearly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.65",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41698,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "b75081e9-64a6-4060-ae04-58fcad077bb2",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "NC",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "7.80",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41699,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "8fcd4f28-c546-400b-bac1-03f84bee7967",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": true,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.80",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "9.11",
              "product_interest_pa_raw": "7.80"
            },
            {
              "id": 41700,
              "f_product_id": "",
              "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
              "f_investment_vehicle_id": "5b261dc6-8fd0-4db7-8a52-375b986921dd",
              "product_details": "NULL",
              "product_type": "FD",
              "product_rank": null,
              "product_min_tenure": 1825,
              "product_max_tenure": 1825,
              "product_min_investment": 5000,
              "product_max_investment": 100000000,
              "product_senior_citizen": true,
              "product_effective_date": "2026-05-05T00:00:00.000Z",
              "product_tax_saver": false,
              "product_issuer_commision": "NULL",
              "product_self_commision": "NULL",
              "product_women": false,
              "product_early_withdrawal": false,
              "product_payout_term": "C",
              "product_loc_in_period": "3",
              "product_interest_freq": "Yearly",
              "product_interest": "7.75",
              "schema_code": "NULL",
              "product_ineffective_date": null,
              "bank_disabled_at": null,
              "deleted_at": null,
              "product_min_tenure_label": "",
              "is_visible": true,
              "product_tag": "NULL",
              "permature_penalty": "",
              "yield": "9.05",
              "product_interest_pa_raw": "7.75"
            }
          ],
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/investment-vehicle/shriram' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Response should contain Shriram FD product variants with tenure/investment bounds",
              "passed": true,
              "message": "120 Shriram FD product variant(s) returned"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_AUTH_001",
          "caseName": "SHRI maturity should reject missing auth",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:17.510Z",
          "endedAt": "2026-06-23T11:14:17.631Z",
          "durationMs": 121,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "10000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "79",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:17 GMT",
            "etag": "W/\"4f-e9FJ4UDsD4YIbJ0B0XBRK2nO4MQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1",
            "server": "envoy"
          },
          "responseBody": {
            "statusCode": 401,
            "message": "x-partner-key is required",
            "error": "Unauthorized"
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=10000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "HTTP status should be 401",
              "passed": true,
              "message": "HTTP 401"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_FREQ001",
          "caseName": "SHRI Maturity payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:17.631Z",
          "endedAt": "2026-06-23T11:14:17.741Z",
          "durationMs": 110,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "10000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:17 GMT",
            "etag": "W/\"1bf-YOy4RFKYoQq9I8IZ16T4ZzTtilM\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 10676
                  }
                ]
              }
            ],
            "maturity_amount": 10676
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=10000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be success payload with maturity fields",
              "passed": true,
              "message": "Success schema valid"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_FREQ002",
          "caseName": "SHRI Monthly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:17.741Z",
          "endedAt": "2026-06-23T11:14:17.771Z",
          "durationMs": 30,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "10000",
            "payout_frequency": "Monthly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "890",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:17 GMT",
            "etag": "W/\"37a-Q2lz/sSrIQuEUUZYHaqlWKc0UNc\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "26",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "a3de69dc-dc1d-4dbc-86b9-1e4b1914cfe4",
            "average_yield": "6.55",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 14.79
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 55
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 55
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 55
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 55
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 55
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 55
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 55
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 55
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 55
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 55
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 55
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 55,
            "total_payout": 660
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=10000&payout_frequency=Monthly&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be success payload with maturity fields",
              "passed": true,
              "message": "Success schema valid"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_FREQ003",
          "caseName": "SHRI Quarterly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:17.771Z",
          "endedAt": "2026-06-23T11:14:17.790Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "10000",
            "payout_frequency": "Quarterly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "624",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:17 GMT",
            "etag": "W/\"270-q9da6uINQPWdx9wzEErPRGZbe6A\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "16",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Quarterly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "4a0df7b1-203a-469c-a01f-f34b149ad021",
            "average_yield": "6.59",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 14.79
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 165
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 165
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 165
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 165,
            "total_payout": 660
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=10000&payout_frequency=Quarterly&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be success payload with maturity fields",
              "passed": true,
              "message": "Success schema valid"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_FREQ004",
          "caseName": "SHRI HalfYearly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:17.790Z",
          "endedAt": "2026-06-23T11:14:17.810Z",
          "durationMs": 20,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "10000",
            "payout_frequency": "HalfYearly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "556",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:17 GMT",
            "etag": "W/\"22c-Uun8vVrZeW/aw8LYaykSZaqBWc0\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "17",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "HalfYearly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "aad7f1d3-2e16-4e9b-94e5-5182a3463e68",
            "average_yield": "6.64",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-09-30",
                    "amount": 184.93
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 332
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 332,
            "total_payout": 664
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=10000&payout_frequency=HalfYearly&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be success payload with maturity fields",
              "passed": true,
              "message": "Success schema valid"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_FREQ005",
          "caseName": "SHRI Yearly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:17.810Z",
          "endedAt": "2026-06-23T11:14:17.829Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "10000",
            "payout_frequency": "Yearly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "494",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:17 GMT",
            "etag": "W/\"1ee-MBvxxjDYIPopaehafkQufaubP7o\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "16",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Yearly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "833b65b4-efa2-46f8-89e2-22fddf6ead36",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 521.51
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 675,
            "total_payout": 675
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=10000&payout_frequency=Yearly&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be success payload with maturity fields",
              "passed": true,
              "message": "Success schema valid"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_BOUND_001",
          "caseName": "SHRI min amount boundary success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:17.829Z",
          "endedAt": "2026-06-23T11:14:17.838Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:17 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be success payload with maturity fields",
              "passed": true,
              "message": "Success schema valid"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_BOUND_002",
          "caseName": "SHRI max amount boundary success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:17.838Z",
          "endedAt": "2026-06-23T11:14:18.634Z",
          "durationMs": 796,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "1825",
            "investment_amount": "100000000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "457",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:18 GMT",
            "etag": "W/\"1c9-0z5h9wYIRmFkTDRq6PR3QFReqLo\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "793",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "7.25",
            "payout_frequency": "Maturity",
            "maturity_date": "2031-06-22",
            "maturity_date_ist": "2031-06-22",
            "f_investment_vehicle_id": "b48c72ef-4294-4153-9e3d-c14e7c77fc0e",
            "average_yield": "8.38",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 1825,
            "product_max_tenure": 1825,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2031,
                "data": [
                  {
                    "date": "2031-06-22",
                    "amount": 141903536
                  }
                ]
              }
            ],
            "maturity_amount": 141903536
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=1825&investment_amount=100000000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be success payload with maturity fields",
              "passed": true,
              "message": "Success schema valid"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_BOUND_003",
          "caseName": "SHRI amount below min should fail",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:18.634Z",
          "endedAt": "2026-06-23T11:14:18.644Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "4000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "214",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:18 GMT",
            "etag": "W/\"d6-01ft2Fyu7FRTRYdxlqCDAqs14Lw\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS092",
                "error": "The entered Investment Amount is not accepted by the issuer"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=4000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be Fixerra error with FIXMAS092",
              "passed": true,
              "message": "FIXMAS092 present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXMAS092"
          ]
        },
        {
          "caseId": "SHRI_MAT_BOUND_004",
          "caseName": "SHRI tenure below min should fail",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:18.644Z",
          "endedAt": "2026-06-23T11:14:18.671Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "364",
            "investment_amount": "10000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:18 GMT",
            "etag": "W/\"219-NZBk2+StBIatLXeUELYm9CMNJ3I\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "23",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "No Fixed Deposits were found based on your inputs. Please consider different values for Investment Amount, Tenure, Payout Frequency, or flags for Senior Citizen, Women, and Tax-saver options.",
                "f_error_message": "",
                "errorCode": "FIXMAS005",
                "error": "No Fixed Deposits were found based on your inputs. Please consider different values for Investment Amount, Tenure, Payout Frequency, or flags for Senior Citizen, Women, and Tax-saver options."
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=364&investment_amount=10000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be Fixerra error with FIXMAS005",
              "passed": true,
              "message": "FIXMAS005 present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "SHRI_MAT_NBFC_001",
          "caseName": "SHRI non-multiple amount should fail FIXMAS091",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:18.671Z",
          "endedAt": "2026-06-23T11:14:18.675Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "100500",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "201",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:18 GMT",
            "etag": "W/\"c9-2re6GDMEIAEFJ1IzkNKzA/vr5Vo\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS091",
                "error": "investment_amount should be a multiple of 1000"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=100500&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be Fixerra error with FIXMAS091",
              "passed": true,
              "message": "FIXMAS091 present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXMAS091"
          ]
        },
        {
          "caseId": "SHRI_MAT_WOMEN_001",
          "caseName": "SHRI women_citizen=true should succeed",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:18.675Z",
          "endedAt": "2026-06-23T11:14:19.467Z",
          "durationMs": 792,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "10000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "true",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:19 GMT",
            "etag": "W/\"1bf-TO1P6nskLAfloxIHgMYm9hQ0Z0s\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "788",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.80",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0efc854e-e1fa-4165-9f1c-df974c7210f4",
            "average_yield": "6.80",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 10681
                  }
                ]
              }
            ],
            "maturity_amount": 10681
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=10000&payout_frequency=Maturity&senior_citizen=false&women_citizen=true&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be success payload with maturity fields",
              "passed": true,
              "message": "Success schema valid"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_005",
          "caseName": "Verify product_interest field is populated",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:19.467Z",
          "endedAt": "2026-06-23T11:14:19.478Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:19 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.product_interest should be a non-empty numeric string",
              "passed": true,
              "message": "product_interest=\"6.75\""
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_006",
          "caseName": "Verify average_yield field is populated",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:19.478Z",
          "endedAt": "2026-06-23T11:14:19.510Z",
          "durationMs": 32,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:19 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "29",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.average_yield should be a non-empty numeric string",
              "passed": true,
              "message": "average_yield=\"6.75\""
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_007",
          "caseName": "Verify maturity_date field is returned",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:19.510Z",
          "endedAt": "2026-06-23T11:14:19.600Z",
          "durationMs": 90,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:19 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "86",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.maturity_date should be a YYYY-MM-DD date string",
              "passed": true,
              "message": "maturity_date=\"2027-06-23\""
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_008",
          "caseName": "Verify f_investment_vehicle_id field is returned",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:19.600Z",
          "endedAt": "2026-06-23T11:14:19.689Z",
          "durationMs": 89,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:19 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "86",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.f_investment_vehicle_id should be a non-empty string",
              "passed": true,
              "message": "f_investment_vehicle_id=\"c05f82c4-f92f-4b37-96eb-a02e808b4f1f\""
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_009",
          "caseName": "Verify minimum investment amount returned (5000)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:19.689Z",
          "endedAt": "2026-06-23T11:14:19.698Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:19 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.product_min_investment should equal 5000",
              "passed": true,
              "message": "product_min_investment=5000"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_010",
          "caseName": "Verify maximum investment amount returned (100000000)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:19.698Z",
          "endedAt": "2026-06-23T11:14:19.707Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:19 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.product_max_investment should equal 100000000",
              "passed": true,
              "message": "product_max_investment=100000000"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_041",
          "caseName": "Verify maturity amount greater than principal in cumulative FD",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:19.708Z",
          "endedAt": "2026-06-23T11:14:19.717Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:19 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.maturity_amount should be greater than the invested principal",
              "passed": true,
              "message": "maturity_amount=5338 > principal=5000"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_042",
          "caseName": "Verify total_payout returned for monthly (non-cumulative) FD",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:19.717Z",
          "endedAt": "2026-06-23T11:14:20.501Z",
          "durationMs": 784,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "payout_frequency": "Monthly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "903",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"387-Qi234IsFsClcc1eOxJJrr/bS7v4\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "781",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "a3de69dc-dc1d-4dbc-86b9-1e4b1914cfe4",
            "average_yield": "6.55",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 73.97
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 273
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 273
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 273
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 273
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 273
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 273,
            "total_payout": 3276
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=50000&payout_frequency=Monthly&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.total_payout should be a positive number",
              "passed": true,
              "message": "total_payout=3276"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_043",
          "caseName": "Verify payout_amount field present for monthly (non-cumulative) FD",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.501Z",
          "endedAt": "2026-06-23T11:14:20.517Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "payout_frequency": "Monthly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "903",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"387-Qi234IsFsClcc1eOxJJrr/bS7v4\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "a3de69dc-dc1d-4dbc-86b9-1e4b1914cfe4",
            "average_yield": "6.55",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 73.97
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 273
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 273
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 273
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 273
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 273
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 273,
            "total_payout": 3276
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=50000&payout_frequency=Monthly&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.payout_amount should be a positive number",
              "passed": true,
              "message": "payout_amount=273"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_044",
          "caseName": "Verify payout data is grouped by year",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.517Z",
          "endedAt": "2026-06-23T11:14:20.531Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "payout_frequency": "Monthly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "903",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"387-Qi234IsFsClcc1eOxJJrr/bS7v4\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "a3de69dc-dc1d-4dbc-86b9-1e4b1914cfe4",
            "average_yield": "6.55",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 73.97
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 273
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 273
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 273
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 273
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 273
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 273,
            "total_payout": 3276
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=50000&payout_frequency=Monthly&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.payout should be an array of {year, data[]} groups",
              "passed": true,
              "message": "payout has 2 year group(s)"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_045",
          "caseName": "Verify payout dates are in ascending order",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.531Z",
          "endedAt": "2026-06-23T11:14:20.547Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "payout_frequency": "Monthly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "903",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"387-Qi234IsFsClcc1eOxJJrr/bS7v4\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "12",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "a3de69dc-dc1d-4dbc-86b9-1e4b1914cfe4",
            "average_yield": "6.55",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 73.97
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 273
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 273
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 273
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 273
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 273
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 273,
            "total_payout": 3276
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=50000&payout_frequency=Monthly&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payout dates should be sorted in ascending order",
              "passed": true,
              "message": "13 payout date(s) in ascending order"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_053",
          "caseName": "Verify invalid payout_frequency value is rejected",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.547Z",
          "endedAt": "2026-06-23T11:14:20.630Z",
          "durationMs": 83,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Weekly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "218",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"da-GsGPQpwhN6hvx2akpkhgtc/Orb8\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS071",
                "error": "Invalid payout_frequency. Please enter a valid payout_frequency"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Weekly&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be a Fixerra error envelope with FIXMAS071",
              "passed": true,
              "message": "Error envelope present (FIXMAS071)"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXMAS071"
          ]
        },
        {
          "caseId": "SHRI_MAT_059",
          "caseName": "Verify missing API key is rejected",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:20.631Z",
          "endedAt": "2026-06-23T11:14:20.635Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "79",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"4f-e9FJ4UDsD4YIbJ0B0XBRK2nO4MQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1",
            "server": "envoy"
          },
          "responseBody": {
            "statusCode": 401,
            "message": "x-partner-key is required",
            "error": "Unauthorized"
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Should reject with an auth/validation error (no 5xx)",
              "passed": true,
              "message": "Rejected as expected (HTTP 401)"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 401, no internal details leaked"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_060",
          "caseName": "Verify a non-empty (invalid) API key value still passes (apikey presence bypasses partner-key check)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.636Z",
          "endedAt": "2026-06-23T11:14:20.645Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "in****yz"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: in****yz'",
          "validations": [
            {
              "description": "apikey header presence bypasses partner-key validation regardless of its value, so the request should succeed with maturity data",
              "passed": true,
              "message": "Request succeeded with maturity data (HTTP 200)"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200, no internal details leaked"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_063",
          "caseName": "Verify blank API key header is rejected",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:20.645Z",
          "endedAt": "2026-06-23T11:14:20.731Z",
          "durationMs": 86,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "****"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "79",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"4f-e9FJ4UDsD4YIbJ0B0XBRK2nO4MQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1",
            "server": "envoy"
          },
          "responseBody": {
            "statusCode": 401,
            "message": "x-partner-key is required",
            "error": "Unauthorized"
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: ****'",
          "validations": [
            {
              "description": "Should reject with an auth/validation error (no 5xx)",
              "passed": true,
              "message": "Rejected as expected (HTTP 401)"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 401, no internal details leaked"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_064",
          "caseName": "Verify response content type is application/json",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.731Z",
          "endedAt": "2026-06-23T11:14:20.740Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Response content type should be application/json",
              "passed": true,
              "message": "application/json response"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_066",
          "caseName": "Verify response time is within SLA (<2s)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.741Z",
          "endedAt": "2026-06-23T11:14:20.750Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Response should complete within 2000ms",
              "passed": true,
              "message": "duration=9ms"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_069",
          "caseName": "Verify SQL injection payload in investment_amount is safely ignored (leading numeric value '5000' is parsed, no injection)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.750Z",
          "endedAt": "2026-06-23T11:14:20.830Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000' OR '1'='1",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000%27+OR+%271%27%3D%271&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200, no internal details leaked"
            },
            {
              "description": "payload.maturity_amount should be a positive number (leading numeric value parsed)",
              "passed": true,
              "message": "maturity_amount=5338"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_070",
          "caseName": "Verify SQL injection payload in tenure is rejected",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.831Z",
          "endedAt": "2026-06-23T11:14:20.836Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365' OR '1'='1",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "198",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"c6-lkpf0VVnOHYlWmFGhvoeDBviVY8\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS067",
                "error": "Invalid tenure. Please enter a valid tenure"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365%27+OR+%271%27%3D%271&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be a Fixerra error envelope (statusCode=400, success=0)",
              "passed": true,
              "message": "Error envelope present"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200, no internal details leaked"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXMAS067"
          ]
        },
        {
          "caseId": "SHRI_MAT_071",
          "caseName": "Verify XSS payload in payout_frequency is rejected",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.836Z",
          "endedAt": "2026-06-23T11:14:20.841Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "<script>alert(1)</script>",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "218",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"da-GsGPQpwhN6hvx2akpkhgtc/Orb8\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS071",
                "error": "Invalid payout_frequency. Please enter a valid payout_frequency"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=%3Cscript%3Ealert%281%29%3C%2Fscript%3E&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be a Fixerra error envelope with FIXMAS071",
              "passed": true,
              "message": "Error envelope present (FIXMAS071)"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200, no internal details leaked"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXMAS071"
          ]
        },
        {
          "caseId": "SHRI_MAT_072",
          "caseName": "Verify HTML injection payload in payout_frequency is rejected",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.841Z",
          "endedAt": "2026-06-23T11:14:20.845Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "<b>Maturity</b>",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "218",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"da-GsGPQpwhN6hvx2akpkhgtc/Orb8\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS071",
                "error": "Invalid payout_frequency. Please enter a valid payout_frequency"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=%3Cb%3EMaturity%3C%2Fb%3E&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be a Fixerra error envelope with FIXMAS071",
              "passed": true,
              "message": "Error envelope present (FIXMAS071)"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200, no internal details leaked"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXMAS071"
          ]
        },
        {
          "caseId": "SHRI_MAT_073",
          "caseName": "Verify tampered/unsupported product_type is rejected",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.845Z",
          "endedAt": "2026-06-23T11:14:20.849Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD' OR '1'='1"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "206",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:20 GMT",
            "etag": "W/\"ce-kpE6H4BBNmqZLTyXPl9iXasRADM\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS107",
                "error": "The product type must be one of the allowed values."
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD%27+OR+%271%27%3D%271' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Body should be a Fixerra error envelope (statusCode=400, success=0)",
              "passed": true,
              "message": "Error envelope present"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200, no internal details leaked"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXMAS107"
          ]
        },
        {
          "caseId": "SHRI_MAT_077",
          "caseName": "Verify rate limiting on maturity endpoint",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:20.849Z",
          "endedAt": "2026-06-23T11:14:21.431Z",
          "durationMs": 582,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:21 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "16",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 15 requests completed without 5xx/network errors"
            },
            {
              "description": "API should either enforce rate limiting (HTTP 429) or remain stable under burst traffic",
              "passed": true,
              "message": "No rate limiting enforced — all 15 requests succeeded with HTTP 200"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_080",
          "caseName": "Verify maturity_date format is YYYY-MM-DD",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:21.431Z",
          "endedAt": "2026-06-23T11:14:21.443Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:21 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.maturity_date should match YYYY-MM-DD",
              "passed": true,
              "message": "maturity_date=\"2027-06-23\""
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_081",
          "caseName": "Verify payout date format is YYYY-MM-DD",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:21.443Z",
          "endedAt": "2026-06-23T11:14:21.458Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "payout_frequency": "Monthly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "903",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:21 GMT",
            "etag": "W/\"387-Qi234IsFsClcc1eOxJJrr/bS7v4\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "a3de69dc-dc1d-4dbc-86b9-1e4b1914cfe4",
            "average_yield": "6.55",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 73.97
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 273
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 273
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 273
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 273
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 273
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 273
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 273
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 273,
            "total_payout": 3276
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=50000&payout_frequency=Monthly&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "every payout[].data[].date should match YYYY-MM-DD",
              "passed": true,
              "message": "13 payout date(s) valid"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_085",
          "caseName": "Verify product_min_tenure equals 365",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:21.458Z",
          "endedAt": "2026-06-23T11:14:21.468Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:21 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.product_min_tenure should equal 365",
              "passed": true,
              "message": "product_min_tenure=365"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_MAT_086",
          "caseName": "Verify product_max_tenure is a valid bound (>= product_min_tenure) for the matched product",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:21.468Z",
          "endedAt": "2026-06-23T11:14:21.478Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:21 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "payload.product_max_tenure should be >= product_min_tenure and > 0",
              "passed": true,
              "message": "product_min_tenure=365, product_max_tenure=365"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_DETAIL_ISSUER_TC_001_Get_Detail_Success_Default_0",
          "caseName": "[POSITIVE] TC_001_Get_Detail_Success_Default",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/detail/c791d914-ef3b-4c63-a9be-f0d3d772e89a",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:21.478Z",
          "endedAt": "2026-06-23T11:14:21.533Z",
          "durationMs": 55,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {},
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "93437",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:21 GMT",
            "etag": "W/\"16cfd-78SJxyl8cfES7e9MZT0021v+d7U\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "issuerData": {
                "id": 1,
                "name": "Shriram Finance Ltd",
                "description": "Shriram Finance is a prominent financial institution with assets under management (AUM) of over ₹2.3 lakh crores. Founded in 1974, the company has grown to become a key player in the finance sector, catering to over 82.2 lakh customers through 3000+ branches. With a dedicated workforce of more than 75,000 employees, Shriram Finance continues to deliver a wide range of financial services and solutions.",
                "f_code": "SHRI",
                "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                "url": "https://images.dev.fixerra.in/logos/shriram/Shriram.png",
                "sub_logo": "https://images.dev.fixerra.in/logos/shriram/SHRIRAM-SMALL.png",
                "compounding_freq": "Yearly",
                "issuer_type": "NBFC",
                "crisil_rating": "AAA/Stable",
                "icra_rating": "AAA/Stable",
                "trusted_users": "7CR+ Since 2022",
                "hero_tag": "",
                "subtag_1": "AA+ Rated by Crisil",
                "subtag_2": "Compounds Yearly",
                "is_range_required": true,
                "bank_disabled_at": null,
                "faq": "",
                "active_issuer_rank": 10,
                "baseline_issuer_rank": null,
                "deleted_at": null,
                "upcoming_bank": false,
                "upcoming_bank_date": null,
                "utm_url": null,
                "renewal_options": {
                  "Principal": false,
                  "No Renewal": true,
                  "Total Amount": true
                },
                "enable_our_pg": false,
                "enable_easy_split": false,
                "pg_setting": "8898609d136b892f53436eea18e0b5e7:4de1de3f2a0607781fc3f5830da13419",
                "is_nominee_required": false,
                "bank_type": "",
                "is_issuer_live": true,
                "women_benefit": 0.05,
                "senior_citizen_benefit": 0.5,
                "minTenure": 365,
                "maxTenure": 1825
              },
              "vehiclesPayload": [
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "664ae34d-f89e-4091-a111-019bfd0db470",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.54"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e4856182-4062-4710-a241-e8166e02f3fb",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.58"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e507f91a-72f6-4942-8325-259a547fc495",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.65"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "7d4a511c-185b-4d40-9da5-72a8de1fb5f0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "d35c1b80-043c-432f-9c06-aced9cdcc120",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.42"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "585512f8-9f08-42f4-8695-b4bce4e628c2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.54"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "6a96fb12-6dc3-4d42-8fc5-48099c9567b2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.58"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "9dd283fd-2aff-486d-82fd-15191d8cacd9",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.65"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "9bc13fc9-5712-4434-8a53-0fa04247e8eb",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "9699ac0d-b5ea-4fdd-825b-e1dcdb596c0b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.81"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "7e90af6c-8e23-4af8-a9cb-f6d61638c13d",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.54"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e6ef7183-c046-4309-9863-97149d4abaaf",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.58"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "eae50d89-d8d7-427c-9282-80e541cce5e9",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.65"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b75081e9-64a6-4060-ae04-58fcad077bb2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "8fcd4f28-c546-400b-bac1-03f84bee7967",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "9.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "16992686-c65c-4060-a287-9a1a9f05ad25",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.50"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "0fe77581-c93c-4e5c-8c65-f251f800f765",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.53"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "84bfb135-88c1-4870-9573-15c15e252b34",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.61"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "30446294-f090-401d-a91d-5449401387e7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "0c70414b-c76f-4313-a276-2d6b8b0ac105",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": 10,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.37"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "5fa4ae62-1257-4370-980e-1cc03f816ab9",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.50"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "97a23579-69c4-462f-9983-f797e921cee6",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.53"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "ffab2420-42a5-435a-96fc-314245e37794",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.61"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "856dcf17-bc56-4ef9-a57d-540fac07d21b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "f8087c21-01e9-4a9c-8315-5ffb646af1ed",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "83682cdf-1c01-49b5-ad1e-746be22c8deb",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.50"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "c3b33079-868d-4fab-bbd0-e9f9507bd732",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.53"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "28b933c7-656c-4d78-abbf-832789e475a8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.61"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "99f63086-0430-4b1c-9a53-9657f4bc8eb4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "5b261dc6-8fd0-4db7-8a52-375b986921dd",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "9.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "1fa4fcf9-27b3-4236-b909-6611d5039664",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.36"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e6fe093c-1149-48c2-abce-e3509b5253f9",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.39"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "912842bd-45cd-48ef-b470-f7343a17e6b7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.46"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "3af629b5-30db-4833-9699-65e01a323255",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a974f8a1-11fd-458e-8926-83b6fd7060db",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.89"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a3210aef-03a8-4cc4-960f-1c6b4af734cc",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.31"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "4a0c5ec2-1ffa-43c8-bb50-6e906b64103c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.36"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "8ef82698-af97-4237-abdf-0ffa4c1ce5b9",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.42"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "66b09437-b182-43ae-b691-5154233e72e5",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.56"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b39a3058-518f-4273-811a-ff1f1df04633",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.70"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "64b46f00-5f67-499c-bdde-bacc17adc389",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.31"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "4bb8f360-3958-4a16-a69e-e61a66d43aa3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.35"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "d5a276d7-ffda-4680-9caa-e2bb87bd48fa",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "67955c55-61e6-4f0c-87e6-2a05aae26bb3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.55"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a86e44d3-ea6e-4c6f-ba11-7483192a2f5f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.55",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.83"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "6d38021e-5996-4213-a042-7838854e8d11",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.27"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "22d95043-84ae-4cdf-a9fe-ff4ec24b3654",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.31"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a649d09e-14b4-42a9-996c-4dc2b53e5831",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.37"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "758a5d00-ab86-4138-b66b-8d5adb1dc841",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.51"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "6da28cad-616a-40b9-a120-f63f797b725a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.64"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "457cfcc6-749d-4d0e-98e2-781f17356999",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "c428d70d-2d47-4e46-b665-be5a0d9e4c16",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b7b8ec4e-b329-495f-aeab-4d06a14134d7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.17"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "86b7a52c-77d4-47fa-944a-9471cfde0145",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.30"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a861ae19-0323-4a73-8ae1-0fb99a04e889",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.30"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "729c39fb-1387-4166-a62e-976e51268df8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b98c6554-a305-494e-952e-75809afa5884",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "7bc714d5-b2b6-4084-8ba4-3dabcf05566e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.17"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b5a12e73-270c-4a72-ad80-93c0f50ff7ee",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.30"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "c6f77afa-9b8c-4b86-95e2-fbceb0894c73",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.85"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "cdf58a25-250f-47b0-adb6-925c18f1229a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "dca0309e-5aa1-43b5-be75-dd96eb82e839",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "0bea5cf5-478e-4919-be2f-926713970595",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.17"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "cc8a1902-e88f-4005-9b8f-b8f439eb59bd",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.30"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "16389033-6562-45bf-be45-fe210fa2ea08",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.19"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "55abbaa4-8d30-4a6a-93ae-ec2cc313359d",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a8de8bd5-5b2d-46ad-abb3-34d34936d3bf",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "4a08a2c0-7fea-4c87-a268-b83ffb9a4d98",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.17"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "69794790-55ef-42a4-bbae-3a3e41ef7e26",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.30"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a32757dd-669a-4302-8578-6d6e2c992307",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.30",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.45"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "81683072-64b3-4064-ad3b-c78472929728",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.02"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "5beeb733-2eb0-4403-8be8-af3240b2f0ec",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.06"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "9ab4d58e-9c6f-485d-8087-7fc021bd70f0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.12"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "88ca58f2-3a7b-47d4-b844-eb7e98114151",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.25"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "1b980525-688a-4e08-9019-0659b1156606",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.25"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "cb8d1712-6661-41bf-865d-7d2522fa7383",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.02"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "8418e3e1-561c-4be0-9046-57d1be6a81b3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.06"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "25400e2e-18d8-42ca-8c2c-ec5f00da9b21",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.12"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "cec67f09-f21a-462c-8e5d-2e66c1ce6e48",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.25"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "6754d53d-3a2e-4f54-a4ef-4805c3404723",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": 3,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.79"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "fb61af7d-253c-4db2-a05f-cac6a4cd8d8c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.02"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "1f154fdf-2a0b-498d-aaef-6094ba14547a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.06"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "4823a80e-8304-4007-847f-569bbde49ab8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.12"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "f8b158e4-62b8-4b53-ae72-1efc01b60df8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.25"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "27d91ad9-cd54-41c3-83a6-b0b57174de5b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1521,
                  "product_max_tenure": 1521,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.13"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "7f0bd032-5dc7-4120-adea-52c1266365d4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.02"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "5f27929b-4f93-4a8a-8a18-6cf9d82606e5",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.06"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a569411d-c0a9-4b7d-9115-f26ccb05da1c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.12"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "7097a098-c6eb-4d6f-9ade-2d5fdd0c98b1",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.25"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b48c72ef-4294-4153-9e3d-c14e7c77fc0e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.25",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.38"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "b8a6f59c-f486-4d92-8272-54c97d874f7f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.10",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.89"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "af981b6d-496d-4dd6-8363-c01b88e17b28",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.10",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.92"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a9d52574-204d-4636-8327-7ba3f7c5a8bc",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.10",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.98"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a8000abf-12b3-49d8-8c4b-4e3bd09dda07",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.10",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.10"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "996088f0-1022-44fe-b718-30460a9e4c88",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.10",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.35"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "669a8b18-c607-4001-9d99-3fac59a5cdb5",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "fa8d51ff-7cba-4108-869f-c1b4da1a045e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.88"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "46c18442-17ef-41e3-bb75-3250a921927d",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.94"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "3ef6a479-4dd7-4ad4-b3ef-fb57e0338fc3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.06"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "06a70326-a347-46cf-a47b-4e08e401094a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.18"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "fe7f0a82-e00a-4ddc-8c95-9e9b207e31f7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "11e08076-7df9-412a-ad2b-8b82eddf27f3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "cf580c4e-7fb5-4c86-afc7-ff7a5de0a704",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e0c5fb2b-c565-4017-af66-bd35c6bed4d1",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "71e973fe-b889-4811-a276-f8f3136f6ff5",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.05",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": null
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e8c7749d-78c0-44f6-a7de-29dc24ad7d3d",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.00",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "e4b5cdcd-aaa4-4ef6-9002-3175513a3f06",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.00",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.83"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "5a0a3d42-d04b-475d-9595-048f19fec0b6",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.00",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.89"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a802d467-f91e-404d-ab96-2b9ef084b90e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.00",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.01"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "38cd906f-5dea-44d9-901b-e86a47b04c98",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.00",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.13"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "6313d995-d0ff-4b42-be95-976d20c70e86",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "73cb7d9d-7ec4-49bd-b996-75d998fe6047",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.63"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "2a339a8b-eb50-4988-93f2-7741d37960ee",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.69"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "f2672357-223e-490b-96dc-060f5f05a242",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "0efc854e-e1fa-4165-9f1c-df974c7210f4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": true,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.80",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.80"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "a3de69dc-dc1d-4dbc-86b9-1e4b1914cfe4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.55"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "4a0df7b1-203a-469c-a01f-f34b149ad021",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.59"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "aad7f1d3-2e16-4e9b-94e5-5182a3463e68",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.64"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "833b65b4-efa2-46f8-89e2-22fddf6ead36",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "c791d914-ef3b-4c63-a9be-f0d3d772e89a",
                  "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 100000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-05T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.75"
                }
              ],
              "highlights": [
                {
                  "title": "All investments are regulated by RBI",
                  "url": "https://images.dev.fixerra.in/illustrations/RBI@3x.png"
                },
                {
                  "title": "Women get up to 0.10% extra",
                  "url": "https://images.dev.fixerra.in/illustrations/Women@3x.png"
                },
                {
                  "title": "Maturity Amount is directly credited to your bank account",
                  "url": "https://images.dev.fixerra.in/illustrations/Bank@3x.png"
                },
                {
                  "title": "Senior Citizens get up to 0.50% extra",
                  "url": "https://images.dev.fixerra.in/illustrations/Senior@3x.png"
                }
              ],
              "about": [
                {
                  "key": "Founded",
                  "value": "1974"
                },
                {
                  "key": "Customers Served",
                  "value": "97  lakh+"
                },
                {
                  "key": "Number of Branches",
                  "value": "3000+"
                },
                {
                  "key": "CRISIL Rating",
                  "value": "AAA/Stable"
                },
                {
                  "key": "Assets Under Management",
                  "value": "₹2.3 lakh Cr+"
                }
              ],
              "distinctMinTenureValues": [
                {
                  "value": 1095
                },
                {
                  "value": 1521
                },
                {
                  "value": 1825
                },
                {
                  "value": 365
                },
                {
                  "value": 547
                },
                {
                  "value": 730
                }
              ],
              "interestPayouts": [
                "Monthly",
                "Quarterly",
                "HalfYearly",
                "Yearly",
                "Maturity"
              ]
            }
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/detail/c791d914-ef3b-4c63-a9be-f0d3d772e89a' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain issuer data in payload.issuerData",
              "passed": true,
              "message": "issuerData present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_DETAIL_ISSUER.md",
          "apiMeta": {
            "endpoint": "/detail/:f_issuer_id",
            "method": "GET",
            "guards": "Auth: `services/master-services/src/auth/authGuards/user.jwt.guard.ts`",
            "authHint": "Auth: `services/master-services/src/auth/authGuards/user.jwt.guard.ts`"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_DETAIL_ISSUER_TC_101_Get_Detail_Unauthorized_NoAuth_1",
          "caseName": "[POSITIVE] TC_101_Get_Detail_Unauthorized_NoAuth",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/detail/c791d914-ef3b-4c63-a9be-f0d3d772e89a",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:21.533Z",
          "endedAt": "2026-06-23T11:14:21.537Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "57",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:21 GMT",
            "etag": "W/\"39-h6wxugZnFxxkjOfxliuYY3JzpSQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied."
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/detail/c791d914-ef3b-4c63-a9be-f0d3d772e89a' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "master-services/API_QA_GET_DETAIL_ISSUER.md",
          "apiMeta": {
            "endpoint": "/detail/:f_issuer_id",
            "method": "GET",
            "guards": "Auth: `services/master-services/src/auth/authGuards/user.jwt.guard.ts`",
            "authHint": "Auth: `services/master-services/src/auth/authGuards/user.jwt.guard.ts`"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_DETAIL_ISSUER_TC_301_Get_Detail_BadRequest_InvalidProductType_FIXMAS0109_3",
          "caseName": "[POSITIVE] TC_301_Get_Detail_BadRequest_InvalidProductType_FIXMAS0109",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/detail/c791d914-ef3b-4c63-a9be-f0d3d772e89a",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:21.537Z",
          "endedAt": "2026-06-23T11:14:21.543Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "product_type": "ABC"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "182",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:21 GMT",
            "etag": "W/\"b6-7wu6zgj18r/yroTFBoKK8tiyfug\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": {
              "errorCode": "FIXUSERDEFAULT",
              "error": [
                "FIXMAS0109"
              ],
              "f_error_reason": "",
              "f_error_message": [
                "FIXMAS0109"
              ]
            }
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/detail/c791d914-ef3b-4c63-a9be-f0d3d772e89a?product_type=ABC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            }
          ],
          "docsFile": "master-services/API_QA_GET_DETAIL_ISSUER.md",
          "apiMeta": {
            "endpoint": "/detail/:f_issuer_id",
            "method": "GET",
            "guards": "Auth: `services/master-services/src/auth/authGuards/user.jwt.guard.ts`",
            "authHint": "Auth: `services/master-services/src/auth/authGuards/user.jwt.guard.ts`"
          },
          "expectedErrorCodes": [
            "FIXMAS0109"
          ],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-FREQ-SHRI-001_0",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:21.543Z",
          "endedAt": "2026-06-23T11:14:21.552Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:21 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-FREQ-SHRI-002_1",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:21.552Z",
          "endedAt": "2026-06-23T11:14:21.630Z",
          "durationMs": 78,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "10000",
            "payout_frequency": "Monthly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "890",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:21 GMT",
            "etag": "W/\"37a-Q2lz/sSrIQuEUUZYHaqlWKc0UNc\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "a3de69dc-dc1d-4dbc-86b9-1e4b1914cfe4",
            "average_yield": "6.55",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 14.79
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 55
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 55
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 55
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 55
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 55
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 55
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 55
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 55
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 55
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 55
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 55
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 55,
            "total_payout": 660
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=10000&payout_frequency=Monthly&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-FREQ-SHRI-003_2",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:21.630Z",
          "endedAt": "2026-06-23T11:14:21.646Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "10000",
            "payout_frequency": "Quarterly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "624",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:21 GMT",
            "etag": "W/\"270-q9da6uINQPWdx9wzEErPRGZbe6A\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "12",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Quarterly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "4a0df7b1-203a-469c-a01f-f34b149ad021",
            "average_yield": "6.59",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 14.79
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 165
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 165
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 165
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 165,
            "total_payout": 660
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=10000&payout_frequency=Quarterly&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-FREQ-SHRI-004_3",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:21.646Z",
          "endedAt": "2026-06-23T11:14:22.414Z",
          "durationMs": 768,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "730",
            "investment_amount": "10000",
            "payout_frequency": "HalfYearly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:22 GMT",
            "etag": "W/\"28a-br5H1CSkwRg+ztjG5+8dc2939Zk\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "765",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "7.05",
            "payout_frequency": "HalfYearly",
            "maturity_date": "2028-06-22",
            "maturity_date_ist": "2028-06-22",
            "f_investment_vehicle_id": "cf580c4e-7fb5-4c86-afc7-ff7a5de0a704",
            "average_yield": "7.05",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 730,
            "product_max_tenure": 730,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-09-30",
                    "amount": 192.89
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 347
                  },
                  {
                    "date": "2027-09-30",
                    "amount": 347
                  }
                ]
              },
              {
                "year": 2028,
                "data": [
                  {
                    "date": "2028-03-31",
                    "amount": 347
                  },
                  {
                    "date": "2028-06-22",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 347,
            "total_payout": 1388
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=730&investment_amount=10000&payout_frequency=HalfYearly&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-FREQ-SHRI-005_4",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:22.414Z",
          "endedAt": "2026-06-23T11:14:22.434Z",
          "durationMs": 20,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "730",
            "investment_amount": "10000",
            "payout_frequency": "Yearly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "553",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:22 GMT",
            "etag": "W/\"229-uz8+Svtpjb83VFHsbGPlMfD4tOc\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "16",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "7.05",
            "payout_frequency": "Yearly",
            "maturity_date": "2028-06-22",
            "maturity_date_ist": "2028-06-22",
            "f_investment_vehicle_id": "e0c5fb2b-c565-4017-af66-bd35c6bed4d1",
            "average_yield": "7.05",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 730,
            "product_max_tenure": 730,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 543.94
                  }
                ]
              },
              {
                "year": 2028,
                "data": [
                  {
                    "date": "2028-03-31",
                    "amount": 705
                  },
                  {
                    "date": "2028-06-22",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 705,
            "total_payout": 1410
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=730&investment_amount=10000&payout_frequency=Yearly&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-POS-003_5",
          "caseName": "[POSITIVE] SHRI valid min boundary",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:22.434Z",
          "endedAt": "2026-06-23T11:14:22.444Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:22 GMT",
            "etag": "W/\"1bd-ncEMbGuH6igy9A/Q3v0Z8EVxGro\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "c05f82c4-f92f-4b37-96eb-a02e808b4f1f",
            "average_yield": "6.75",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5338
                  }
                ]
              }
            ],
            "maturity_amount": 5338
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-POS-004_6",
          "caseName": "[POSITIVE] SHRI above max investment (should fail)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:22.444Z",
          "endedAt": "2026-06-23T11:14:22.453Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "1825",
            "investment_amount": "999999000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "214",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:22 GMT",
            "etag": "W/\"d6-01ft2Fyu7FRTRYdxlqCDAqs14Lw\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS092",
                "error": "The entered Investment Amount is not accepted by the issuer"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=1825&investment_amount=999999000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [
            "FIXMAS092"
          ],
          "actualErrorCodes": [
            "FIXMAS092"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-LIMIT-SHRI-001_7",
          "caseName": "[EDGE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:22.453Z",
          "endedAt": "2026-06-23T11:14:22.463Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-LIMIT-SHRI-001"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "4000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "214",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:22 GMT",
            "etag": "W/\"d6-01ft2Fyu7FRTRYdxlqCDAqs14Lw\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS092",
                "error": "The entered Investment Amount is not accepted by the issuer"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=4000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"TC-MAT-LIMIT-SHRI-001\"}'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should contain error code(s): FIXMAS092",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [
            "FIXMAS092"
          ],
          "actualErrorCodes": [
            "FIXMAS092"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-LIMIT-SHRI-002_8",
          "caseName": "[EDGE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:22.463Z",
          "endedAt": "2026-06-23T11:14:22.473Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-LIMIT-SHRI-002"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "1100000000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "214",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:22 GMT",
            "etag": "W/\"d6-01ft2Fyu7FRTRYdxlqCDAqs14Lw\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS092",
                "error": "The entered Investment Amount is not accepted by the issuer"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=1100000000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"TC-MAT-LIMIT-SHRI-002\"}'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should contain error code(s): FIXMAS092",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [
            "FIXMAS092"
          ],
          "actualErrorCodes": [
            "FIXMAS092"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-TAX-SHRI-001_9",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:22.473Z",
          "endedAt": "2026-06-23T11:14:22.484Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "true"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "192",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:22 GMT",
            "etag": "W/\"c0-93bI5/OhS+luDK8tJtJZx7vb+Qk\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS090",
                "error": "Shriram doesnt support tax saver Fds."
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=true' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [
            "FIXMAS090"
          ],
          "actualErrorCodes": [
            "FIXMAS090"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-WOM-SHRI-001_10",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:22.484Z",
          "endedAt": "2026-06-23T11:14:23.257Z",
          "durationMs": 773,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "true",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:23 GMT",
            "etag": "W/\"1bd-rAX4Ourd/EMs8ZqmAX0PY8jVwPY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "770",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.80",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0efc854e-e1fa-4165-9f1c-df974c7210f4",
            "average_yield": "6.80",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5341
                  }
                ]
              }
            ],
            "maturity_amount": 5341
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=false&women_citizen=true&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-SR-SHRI-001_11",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:23.257Z",
          "endedAt": "2026-06-23T11:14:24.039Z",
          "durationMs": 782,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Maturity",
            "senior_citizen": "true",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:24 GMT",
            "etag": "W/\"1bd-bxLVxi1902BIXZoh0Nqwj3zC3e4\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "777",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "7.25",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b980525-688a-4e08-9019-0659b1156606",
            "average_yield": "7.25",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5363
                  }
                ]
              }
            ],
            "maturity_amount": 5363
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Maturity&senior_citizen=true&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-EDG-005_12",
          "caseName": "[EDGE] Very large valid amount near SHRI max",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:24.040Z",
          "endedAt": "2026-06-23T11:14:24.050Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-EDG-005"
          },
          "requestQuery": {
            "tenure": "1825",
            "investment_amount": "999999000",
            "payout_frequency": "Yearly",
            "senior_citizen": "true",
            "women_citizen": "true",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "214",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:24 GMT",
            "etag": "W/\"d6-01ft2Fyu7FRTRYdxlqCDAqs14Lw\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS092",
                "error": "The entered Investment Amount is not accepted by the issuer"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=1825&investment_amount=999999000&payout_frequency=Yearly&senior_citizen=true&women_citizen=true&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"TC-MAT-EDG-005\"}'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXMAS092"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-001_13",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:24.051Z",
          "endedAt": "2026-06-23T11:14:24.828Z",
          "durationMs": 777,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Monthly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "888",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:24 GMT",
            "etag": "W/\"378-Vrnsge9VhWZ9qERPLej92zzqmeM\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "775",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.75",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "a3de69dc-dc1d-4dbc-86b9-1e4b1914cfe4",
            "average_yield": "6.55",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 7.4
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 28
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 28
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 28
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 28
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 28
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 28
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 28
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 28
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 28
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 28
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 28
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 28,
            "total_payout": 336
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Monthly&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-002_14",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:24.828Z",
          "endedAt": "2026-06-23T11:14:25.604Z",
          "durationMs": 776,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Monthly",
            "senior_citizen": "true",
            "women_citizen": "false",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "889",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:25 GMT",
            "etag": "W/\"379-oE/0dWJog0Uwnvf4ZL4rBhJMGnY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "773",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "7.25",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "81683072-64b3-4064-ad3b-c78472929728",
            "average_yield": "7.02",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 7.95
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 30
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 30
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 30
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 30
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 30
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 30
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 30
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 30
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 30
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 30
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 30
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 30,
            "total_payout": 360
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Monthly&senior_citizen=true&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-003_15",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:25.605Z",
          "endedAt": "2026-06-23T11:14:26.374Z",
          "durationMs": 769,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Monthly",
            "senior_citizen": "false",
            "women_citizen": "true",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "889",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:26 GMT",
            "etag": "W/\"379-v/kFbFprEbYdsbg+sTxKZZSo768\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "766",
            "server": "envoy",
            "connection": "close"
          },
          "responseBody": {
            "product_interest": "6.80",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "6313d995-d0ff-4b42-be95-976d20c70e86",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 7.45
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 28
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 28
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 28
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 28
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 28
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 28
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 28
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 28
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 28
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 28
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 28
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 28,
            "total_payout": 336
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Monthly&senior_citizen=false&women_citizen=true&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-004_16",
          "caseName": "[EDGE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:26.374Z",
          "endedAt": "2026-06-23T11:14:26.385Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-004"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Monthly",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "true"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "192",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:26 GMT",
            "etag": "W/\"c0-93bI5/OhS+luDK8tJtJZx7vb+Qk\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS090",
                "error": "Shriram doesnt support tax saver Fds."
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Monthly&senior_citizen=false&women_citizen=false&tax_saver=true' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"FLAG-004\"}'",
          "validations": [
            {
              "description": "Response should contain error code(s): FIXMAS090",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [
            "FIXMAS090"
          ],
          "actualErrorCodes": [
            "FIXMAS090"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-005_17",
          "caseName": "[POSITIVE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:26.385Z",
          "endedAt": "2026-06-23T11:14:27.171Z",
          "durationMs": 786,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Monthly",
            "senior_citizen": "true",
            "women_citizen": "true",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "886",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:27 GMT",
            "etag": "W/\"376-jkN6FdHWecZL8uh86btFUcxl/hA\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "783",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "7.30",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "457cfcc6-749d-4d0e-98e2-781f17356999",
            "average_yield": "7.08",
            "product_min_investment": 5000,
            "product_max_investment": 100000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 8
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 30
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 30
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 30
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 30
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 30
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 30
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 30
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 30
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 30
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 30
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 30
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 0
                  }
                ]
              }
            ],
            "payout_amount": 30,
            "total_payout": 360
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Monthly&senior_citizen=true&women_citizen=true&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-006_18",
          "caseName": "[EDGE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:27.171Z",
          "endedAt": "2026-06-23T11:14:27.181Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-006"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Monthly",
            "senior_citizen": "true",
            "women_citizen": "false",
            "tax_saver": "true"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "192",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:27 GMT",
            "etag": "W/\"c0-93bI5/OhS+luDK8tJtJZx7vb+Qk\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS090",
                "error": "Shriram doesnt support tax saver Fds."
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Monthly&senior_citizen=true&women_citizen=false&tax_saver=true' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"FLAG-006\"}'",
          "validations": [
            {
              "description": "Response should contain error code(s): FIXMAS090",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [
            "FIXMAS090"
          ],
          "actualErrorCodes": [
            "FIXMAS090"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-007_19",
          "caseName": "[EDGE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:27.181Z",
          "endedAt": "2026-06-23T11:14:27.191Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-007"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Monthly",
            "senior_citizen": "false",
            "women_citizen": "true",
            "tax_saver": "true"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "192",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:27 GMT",
            "etag": "W/\"c0-93bI5/OhS+luDK8tJtJZx7vb+Qk\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS090",
                "error": "Shriram doesnt support tax saver Fds."
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Monthly&senior_citizen=false&women_citizen=true&tax_saver=true' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"FLAG-007\"}'",
          "validations": [
            {
              "description": "Response should contain error code(s): FIXMAS090",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [
            "FIXMAS090"
          ],
          "actualErrorCodes": [
            "FIXMAS090"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-008_20",
          "caseName": "[EDGE] `SHRI`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:27.191Z",
          "endedAt": "2026-06-23T11:14:27.201Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-008"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "5000",
            "payout_frequency": "Monthly",
            "senior_citizen": "true",
            "women_citizen": "true",
            "tax_saver": "true"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "192",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:27 GMT",
            "etag": "W/\"c0-93bI5/OhS+luDK8tJtJZx7vb+Qk\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS090",
                "error": "Shriram doesnt support tax saver Fds."
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/SHRI?tenure=365&investment_amount=5000&payout_frequency=Monthly&senior_citizen=true&women_citizen=true&tax_saver=true' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"FLAG-008\"}'",
          "validations": [
            {
              "description": "Response should contain error code(s): FIXMAS090",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [
            "FIXMAS090"
          ],
          "actualErrorCodes": [
            "FIXMAS090"
          ]
        }
      ],
      "summary": {
        "total": 66,
        "passed": 66,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 10863
      }
    },
    {
      "stepId": "step-03-pan-verification",
      "stepName": "PAN Verification",
      "cases": [
        {
          "caseId": "SHRI_PAN_001",
          "caseName": "Get user profile before PAN entry (Shriram Finance)",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "static",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:27.201Z",
          "endedAt": "2026-06-23T11:14:27.383Z",
          "durationMs": 182,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1395",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:27 GMT",
            "etag": "W/\"573-uoAvJ3mNshPokhZMReFV0lz8v2c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "44",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "createdAt": "2026-06-23T11:14:11.000Z",
              "isActive": true,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "profile_photo": null,
              "profile_photo_file_name": null,
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "",
              "salutation": "",
              "first_name": "",
              "middle_name": "",
              "last_name": "",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "918668336629",
              "code": "91",
              "dob": null,
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:14:11.583Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "",
              "annual_income": "",
              "user_tax_status": "",
              "father_name": "",
              "is_pan_verified": false,
              "is_email_verified": false,
              "is_aadhaar_verified": false,
              "is_nominee_present": false,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "",
              "kin_first_name": "",
              "kin_middle_name": "",
              "kin_last_name": "",
              "marital_status": "",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": null,
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": null,
              "profile_updated_at": null,
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:44:11.000Z",
              "is_personal_details": {
                "BAJ": false,
                "MAH": false,
                "SHRI": false
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Response should contain user data",
              "passed": true,
              "message": "User data present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_GET_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_003",
          "caseName": "Verify PAN for Shriram Finance",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:27.383Z",
          "endedAt": "2026-06-23T11:14:27.990Z",
          "durationMs": 607,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:27 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "604",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            },
            {
              "description": "Response should indicate PAN verification result",
              "passed": true,
              "message": "PAN verification result present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_004",
          "caseName": "Verify PAN response success flag",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:27.990Z",
          "endedAt": "2026-06-23T11:14:28.453Z",
          "durationMs": 463,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:28 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "459",
            "server": "envoy",
            "connection": "close"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_005",
          "caseName": "Verify PAN response schema",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:28.453Z",
          "endedAt": "2026-06-23T11:14:28.795Z",
          "durationMs": 342,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:28 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "329",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            },
            {
              "description": "Response schema should match contract",
              "passed": true,
              "message": "Response schema valid"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_006",
          "caseName": "Verify PAN response content type",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:28.795Z",
          "endedAt": "2026-06-23T11:14:29.180Z",
          "durationMs": 385,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:29 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "382",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            },
            {
              "description": "Response content type should be application/json",
              "passed": true,
              "message": "application/json response"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_007",
          "caseName": "Verify PAN response time",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:29.180Z",
          "endedAt": "2026-06-23T11:14:29.580Z",
          "durationMs": 400,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:29 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "397",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            },
            {
              "description": "Response should complete within 5000ms",
              "passed": true,
              "message": "duration=400ms"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_008",
          "caseName": "Verify payload object exists in PAN success response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:29.580Z",
          "endedAt": "2026-06-23T11:14:29.912Z",
          "durationMs": 332,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:29 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "329",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            },
            {
              "description": "Payload object should exist",
              "passed": true,
              "message": "payload present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_009",
          "caseName": "Verify PAN field blank",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:29.912Z",
          "endedAt": "2026-06-23T11:14:29.923Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "307",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:29 GMT",
            "etag": "W/\"133-qUvnp6YJVYDF+eWnnFEL7DIUbRU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1022",
                "error": "PAN number is required"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1022 or FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1022/FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1022",
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001",
            "FIXUSER1022"
          ]
        },
        {
          "caseId": "SHRI_PAN_010",
          "caseName": "Verify PAN field null",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:29.923Z",
          "endedAt": "2026-06-23T11:14:29.938Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": null,
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "307",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:29 GMT",
            "etag": "W/\"133-qUvnp6YJVYDF+eWnnFEL7DIUbRU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1022",
                "error": "PAN number is required"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":null,\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1022 or FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1022/FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1022",
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001",
            "FIXUSER1022"
          ]
        },
        {
          "caseId": "SHRI_PAN_011",
          "caseName": "Verify PAN field missing",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:29.938Z",
          "endedAt": "2026-06-23T11:14:29.950Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "307",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:29 GMT",
            "etag": "W/\"133-qUvnp6YJVYDF+eWnnFEL7DIUbRU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1022",
                "error": "PAN number is required"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1022 or FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1022/FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1022",
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001",
            "FIXUSER1022"
          ]
        },
        {
          "caseId": "SHRI_PAN_012",
          "caseName": "Verify PAN less than 10 characters",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:29.950Z",
          "endedAt": "2026-06-23T11:14:30.027Z",
          "durationMs": 77,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "BLXPR343",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:29 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "74",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"BLXPR343\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_013",
          "caseName": "Verify PAN more than 10 characters",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.027Z",
          "endedAt": "2026-06-23T11:14:30.066Z",
          "durationMs": 39,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "BLXPR3438LL",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "36",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"BLXPR3438LL\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_014",
          "caseName": "Verify PAN with lowercase characters",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.066Z",
          "endedAt": "2026-06-23T11:14:30.078Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "blxpr3438l",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"blxpr3438l\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_015",
          "caseName": "Verify PAN with special characters",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.078Z",
          "endedAt": "2026-06-23T11:14:30.088Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "BLXP@3438L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"BLXP@3438L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_016",
          "caseName": "Verify PAN with spaces",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.088Z",
          "endedAt": "2026-06-23T11:14:30.097Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "BLXP R3438L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"BLXP R3438L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_017",
          "caseName": "Verify numeric-only PAN",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.098Z",
          "endedAt": "2026-06-23T11:14:30.127Z",
          "durationMs": 29,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "26",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_018",
          "caseName": "Verify alphabet-only PAN",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.127Z",
          "endedAt": "2026-06-23T11:14:30.137Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "ABCDEFGHIJ",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"ABCDEFGHIJ\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_019",
          "caseName": "Verify invalid PAN pattern",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.137Z",
          "endedAt": "2026-06-23T11:14:30.147Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AB123456CD",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AB123456CD\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_020",
          "caseName": "Verify SQL injection in PAN field",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.147Z",
          "endedAt": "2026-06-23T11:14:30.158Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "' OR 1=1 --",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"'\\'' OR 1=1 --\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_021",
          "caseName": "Verify XSS payload in PAN field",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.158Z",
          "endedAt": "2026-06-23T11:14:30.168Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "<script>alert(1)</script>",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"<script>alert(1)</script>\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_022",
          "caseName": "Verify malformed request JSON",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.168Z",
          "endedAt": "2026-06-23T11:14:30.226Z",
          "durationMs": 58,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": "{\"number\":",
          "requestQuery": {},
          "responseHeaders": {
            "content-length": "248",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"f8-ydQRwr2txlf09MfVIoTWDDYnXgw\"",
            "vary": "Origin",
            "x-powered-by": "Express",
            "x-envoy-upstream-service-time": "55",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Unexpected token '\"', \"\"{\\\"number\\\":\"\" is not valid JSON",
            "payload": {},
            "error": {
              "statusCode": 400,
              "message": "Unexpected token '\"', \"\"{\\\"number\\\":\"\" is not valid JSON",
              "error": "Bad Request"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_023",
          "caseName": "Verify empty request body",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.226Z",
          "endedAt": "2026-06-23T11:14:30.237Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {},
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "307",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"133-qUvnp6YJVYDF+eWnnFEL7DIUbRU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1022",
                "error": "PAN number is required"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1001",
            "FIXUSER1022"
          ]
        },
        {
          "caseId": "SHRI_PAN_024",
          "caseName": "Verify request without Content-Type header",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.237Z",
          "endedAt": "2026-06-23T11:14:30.247Z",
          "durationMs": 10,
          "requestHeaders": {
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": "{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}",
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "307",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"133-qUvnp6YJVYDF+eWnnFEL7DIUbRU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1022",
                "error": "PAN number is required"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1001",
            "FIXUSER1022"
          ]
        },
        {
          "caseId": "SHRI_PAN_025",
          "caseName": "Verify invalid Content-Type",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.247Z",
          "endedAt": "2026-06-23T11:14:30.431Z",
          "durationMs": 184,
          "requestHeaders": {
            "Content-Type": "text/plain",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": "{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}",
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "307",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"133-qUvnp6YJVYDF+eWnnFEL7DIUbRU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1022",
                "error": "PAN number is required"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: text/plain' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1001",
            "FIXUSER1022"
          ]
        },
        {
          "caseId": "SHRI_PAN_026",
          "caseName": "Verify error response schema",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.431Z",
          "endedAt": "2026-06-23T11:14:30.441Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Error response schema should match contract",
              "passed": true,
              "message": "Error schema valid"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_027",
          "caseName": "Verify error response message",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.441Z",
          "endedAt": "2026-06-23T11:14:30.450Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Error response should contain message text",
              "passed": true,
              "message": "message=\"Bad request\""
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_028",
          "caseName": "Verify error code mapping",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.450Z",
          "endedAt": "2026-06-23T11:14:30.461Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_029",
          "caseName": "Verify payload object in error response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:30.461Z",
          "endedAt": "2026-06-23T11:14:30.472Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate a structured error envelope",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Payload object should exist in error response",
              "passed": true,
              "message": "payload object present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PAN_030",
          "caseName": "Verify required response headers",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:30.472Z",
          "endedAt": "2026-06-23T11:14:30.903Z",
          "durationMs": 431,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:30 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "428",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            },
            {
              "description": "Required response headers should be present",
              "passed": true,
              "message": "Required response headers present"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_031",
          "caseName": "Verify PAN data is not exposed in response",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:30.903Z",
          "endedAt": "2026-06-23T11:14:31.453Z",
          "durationMs": 550,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:31 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "546",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            },
            {
              "description": "Response should not expose PAN or DOB values",
              "passed": true,
              "message": "No PAN/DOB leakage in response body"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_033",
          "caseName": "Verify API under load",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:31.453Z",
          "endedAt": "2026-06-23T11:14:32.535Z",
          "durationMs": 1082,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:32 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "590",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 3 requests completed without 5xx/network errors"
            },
            {
              "description": "Average response time across burst should stay under 5000ms",
              "passed": true,
              "message": "Average duration 518ms across 3 requests"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_034",
          "caseName": "Verify API rate limiting",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:32.535Z",
          "endedAt": "2026-06-23T11:14:33.585Z",
          "durationMs": 1050,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:33 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "410",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "API should either enforce rate limiting (HTTP 429) or remain stable under burst traffic",
              "passed": true,
              "message": "No rate limiting enforced — all 3 requests succeeded with HTTP 200/201"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_045",
          "caseName": "Verify PAN holder name returned",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:33.586Z",
          "endedAt": "2026-06-23T11:14:33.925Z",
          "durationMs": 339,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:33 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "336",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            },
            {
              "description": "payload.name should be populated",
              "passed": true,
              "message": "name=\"OM CHANDRASHEKHAR WAKHARE\""
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PAN_046",
          "caseName": "Verify father name returned",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/pan-verification",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:14:33.925Z",
          "endedAt": "2026-06-23T11:14:34.279Z",
          "durationMs": 354,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "number": "AJFPW6688L",
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "162",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:34 GMT",
            "etag": "W/\"a2-nEezBOarUBHmI0Ccl5143iWpHCI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "352",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "OM CHANDRASHEKHAR WAKHARE",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"number\":\"AJFPW6688L\",\"issuer_code\":\"SHRI\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            },
            {
              "description": "payload.father_name should be populated",
              "passed": true,
              "message": "father_name=\"WAKHARE BABASAHEB CHANDRASHEKHAR\""
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        }
      ],
      "summary": {
        "total": 34,
        "passed": 34,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 7076
      }
    },
    {
      "stepId": "step-04-shriram-kyc-gate",
      "stepName": "Shriram KYC Gate",
      "cases": [
        {
          "caseId": "SHRI_GATE_001",
          "caseName": "Shriram check-status gate (issuer readiness)",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:34.280Z",
          "endedAt": "2026-06-23T11:14:35.960Z",
          "durationMs": 1680,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:35 GMT",
            "etag": "W/\"1bd-kbPI/5Jgxkanu00KmXUw8U1wJyI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1677",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "id": 925,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "pan_rapid_id": null,
              "pan_rapid_id_created_at": null,
              "is_shriram_digilocker_verified": false,
              "is_shriram_digilocker_verified_created_at": null,
              "is_fixerra_aadhar_verified": false,
              "etb": false,
              "ntb": true,
              "transaction_status": false,
              "created_at": "2026-06-23T11:14:35.000Z",
              "updated_at": "2026-06-23T11:14:35.000Z",
              "masked_mobile": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response should expose the Shriram user-validation record (200) or a tolerated issuer error (400 FIXUSER1431/FIXUSER1430)",
              "passed": true,
              "message": "f_user_id=db6a1b09-2421-42b1-ba92-f4afb2cbfbe4, digilocker_verified=false, aadhar_verified=false, etb=false, ntb=true"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_003",
          "caseName": "Shriram check-status gate (review re-check)",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:35.960Z",
          "endedAt": "2026-06-23T11:14:37.482Z",
          "durationMs": 1522,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:37 GMT",
            "etag": "W/\"1bd-XoPZguwkbOXwJZpq2WzJtYEYhp0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1519",
            "server": "envoy",
            "connection": "close"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "id": 925,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "pan_rapid_id": null,
              "pan_rapid_id_created_at": null,
              "is_shriram_digilocker_verified": false,
              "is_shriram_digilocker_verified_created_at": null,
              "is_fixerra_aadhar_verified": false,
              "etb": false,
              "ntb": true,
              "transaction_status": false,
              "created_at": "2026-06-23T11:14:35.000Z",
              "updated_at": "2026-06-23T11:14:37.000Z",
              "masked_mobile": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response should expose the Shriram user-validation record (200) or a tolerated issuer error (400 FIXUSER1431/FIXUSER1430)",
              "passed": true,
              "message": "f_user_id=db6a1b09-2421-42b1-ba92-f4afb2cbfbe4, digilocker_verified=false, aadhar_verified=false, etb=false, ntb=true"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_004",
          "caseName": "Reject check-status without any auth headers",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:37.482Z",
          "endedAt": "2026-06-23T11:14:37.488Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:37 GMT",
            "etag": "W/\"a9-ra1+G8sgf4WPH3Nd3PzEHUQT2fc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be \"x-partner-key is required\"",
              "passed": true,
              "message": "message=\"x-partner-key is required\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_005",
          "caseName": "Reject check-status with invalid bearer token",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:37.489Z",
          "endedAt": "2026-06-23T11:14:37.493Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer invalid.jwt.token"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:37 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer invalid.jwt.token'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_007",
          "caseName": "Reject check-status with expired JWT",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:37.493Z",
          "endedAt": "2026-06-23T11:14:37.499Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer expired.jwt.token"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:37 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer expired.jwt.token'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_008",
          "caseName": "Reject check-status with malformed/corrupted JWT",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:37.499Z",
          "endedAt": "2026-06-23T11:14:37.531Z",
          "durationMs": 32,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer corrupted-token-!!!"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:37 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer corrupted-token-!!!'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_009",
          "caseName": "Reject check-status when Bearer keyword is missing",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:37.531Z",
          "endedAt": "2026-06-23T11:14:37.536Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:37 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_010",
          "caseName": "Reject check-status with Basic auth scheme instead of Bearer",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:37.537Z",
          "endedAt": "2026-06-23T11:14:37.541Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Basic dXNlcjpwYXNz"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:37 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Basic dXNlcjpwYXNz'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_011",
          "caseName": "Reject check-status with empty Authorization header",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:37.541Z",
          "endedAt": "2026-06-23T11:14:37.546Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:37 GMT",
            "etag": "W/\"a9-ra1+G8sgf4WPH3Nd3PzEHUQT2fc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be an auth rejection",
              "passed": true,
              "message": "message=\"x-partner-key is required\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_012",
          "caseName": "Verify HTTP method POST instead of GET for check-status",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:14:37.546Z",
          "endedAt": "2026-06-23T11:14:37.631Z",
          "durationMs": 85,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "202",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:37 GMT",
            "etag": "W/\"ca-Mx8fv9uxu2Qc9p9kKQ2vROxLQjY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 404,
            "message": "Cannot POST /v1/issuer-shriram/check-status",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot POST /v1/issuer-shriram/check-status",
              "error": "Not Found"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_013",
          "caseName": "Verify HTTP method PUT instead of GET for check-status",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:14:37.631Z",
          "endedAt": "2026-06-23T11:14:37.731Z",
          "durationMs": 100,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "200",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:37 GMT",
            "etag": "W/\"c8-TKe80217PILFX1VFgbSIbjZqK2k\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 404,
            "message": "Cannot PUT /v1/issuer-shriram/check-status",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot PUT /v1/issuer-shriram/check-status",
              "error": "Not Found"
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_014",
          "caseName": "Verify HTTP method DELETE instead of GET for check-status",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:14:37.731Z",
          "endedAt": "2026-06-23T11:14:37.735Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "206",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:37 GMT",
            "etag": "W/\"ce-qiQf2f4zRIj9QSzIH168d/0uzfI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 404,
            "message": "Cannot DELETE /v1/issuer-shriram/check-status",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot DELETE /v1/issuer-shriram/check-status",
              "error": "Not Found"
            }
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_015",
          "caseName": "Verify check-status response envelope datatypes",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:37.736Z",
          "endedAt": "2026-06-23T11:14:39.254Z",
          "durationMs": 1518,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:39 GMT",
            "etag": "W/\"1bd-poGnSx04UF0oGIgI0XTeghjKelg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1515",
            "server": "envoy",
            "connection": "close"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "id": 925,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "pan_rapid_id": null,
              "pan_rapid_id_created_at": null,
              "is_shriram_digilocker_verified": false,
              "is_shriram_digilocker_verified_created_at": null,
              "is_fixerra_aadhar_verified": false,
              "etb": false,
              "ntb": true,
              "transaction_status": false,
              "created_at": "2026-06-23T11:14:35.000Z",
              "updated_at": "2026-06-23T11:14:39.000Z",
              "masked_mobile": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "check-status response envelope should have the expected datatypes",
              "passed": true,
              "message": "datatype OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_016",
          "caseName": "Verify check-status response time is within limits",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:39.254Z",
          "endedAt": "2026-06-23T11:14:40.814Z",
          "durationMs": 1560,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:40 GMT",
            "etag": "W/\"1bd-EWCJiUMcYtCiLQxh6MrsyRH4LfU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1545",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "id": 925,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "pan_rapid_id": null,
              "pan_rapid_id_created_at": null,
              "is_shriram_digilocker_verified": false,
              "is_shriram_digilocker_verified_created_at": null,
              "is_fixerra_aadhar_verified": false,
              "etb": false,
              "ntb": true,
              "transaction_status": false,
              "created_at": "2026-06-23T11:14:35.000Z",
              "updated_at": "2026-06-23T11:14:40.000Z",
              "masked_mobile": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response should expose the Shriram user-validation record (200) or a tolerated issuer error (400 FIXUSER1431/FIXUSER1430)",
              "passed": true,
              "message": "f_user_id=db6a1b09-2421-42b1-ba92-f4afb2cbfbe4, digilocker_verified=false, aadhar_verified=false, etb=false, ntb=true"
            },
            {
              "description": "Response should complete within 5000ms",
              "passed": true,
              "message": "duration=1560ms"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_017",
          "caseName": "Verify check-status response does not leak PAN or mobile number",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:40.814Z",
          "endedAt": "2026-06-23T11:14:42.333Z",
          "durationMs": 1519,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:42 GMT",
            "etag": "W/\"1bd-ZGbgZvkGD5Ft+WvF39IOT4IOMGY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1515",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "id": 925,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "pan_rapid_id": null,
              "pan_rapid_id_created_at": null,
              "is_shriram_digilocker_verified": false,
              "is_shriram_digilocker_verified_created_at": null,
              "is_fixerra_aadhar_verified": false,
              "etb": false,
              "ntb": true,
              "transaction_status": false,
              "created_at": "2026-06-23T11:14:35.000Z",
              "updated_at": "2026-06-23T11:14:42.000Z",
              "masked_mobile": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response should expose the Shriram user-validation record (200) or a tolerated issuer error (400 FIXUSER1431/FIXUSER1430)",
              "passed": true,
              "message": "f_user_id=db6a1b09-2421-42b1-ba92-f4afb2cbfbe4, digilocker_verified=false, aadhar_verified=false, etb=false, ntb=true"
            },
            {
              "description": "Response should not expose PAN or mobile number in plaintext",
              "passed": true,
              "message": "No PAN/mobile leakage in response body"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_018",
          "caseName": "Verify check-status response does not expose the JWT token",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:42.333Z",
          "endedAt": "2026-06-23T11:14:43.948Z",
          "durationMs": 1615,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:43 GMT",
            "etag": "W/\"1bd-J9O2GyUCQM2iMHzcy7tgsbcNzSk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1611",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "id": 925,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "pan_rapid_id": null,
              "pan_rapid_id_created_at": null,
              "is_shriram_digilocker_verified": false,
              "is_shriram_digilocker_verified_created_at": null,
              "is_fixerra_aadhar_verified": false,
              "etb": false,
              "ntb": true,
              "transaction_status": false,
              "created_at": "2026-06-23T11:14:35.000Z",
              "updated_at": "2026-06-23T11:14:43.000Z",
              "masked_mobile": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response should expose the Shriram user-validation record (200) or a tolerated issuer error (400 FIXUSER1431/FIXUSER1430)",
              "passed": true,
              "message": "f_user_id=db6a1b09-2421-42b1-ba92-f4afb2cbfbe4, digilocker_verified=false, aadhar_verified=false, etb=false, ntb=true"
            },
            {
              "description": "Response should not expose the JWT access token",
              "passed": true,
              "message": "JWT token not present in response body"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_020",
          "caseName": "Verify check-status handles SQL injection in custom header",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:43.948Z",
          "endedAt": "2026-06-23T11:14:45.473Z",
          "durationMs": 1525,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-QA-Test": "' OR '1'='1'; DROP TABLE users; --",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:45 GMT",
            "etag": "W/\"1bd-42rmMyHYsAMV9SIvVXVvMM76yvo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1522",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "id": 925,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "pan_rapid_id": null,
              "pan_rapid_id_created_at": null,
              "is_shriram_digilocker_verified": false,
              "is_shriram_digilocker_verified_created_at": null,
              "is_fixerra_aadhar_verified": false,
              "etb": false,
              "ntb": true,
              "transaction_status": false,
              "created_at": "2026-06-23T11:14:35.000Z",
              "updated_at": "2026-06-23T11:14:45.000Z",
              "masked_mobile": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-QA-Test: '\\'' OR '\\''1'\\''='\\''1'\\''; DROP TABLE users; --' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "SQL injection header should either be rejected or safely ignored",
              "passed": true,
              "message": "SQL injection header safely ignored by API (status 200, success=1)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_021",
          "caseName": "Verify check-status handles XSS payload in custom header",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:45.473Z",
          "endedAt": "2026-06-23T11:14:46.982Z",
          "durationMs": 1509,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-QA-Test": "<script>alert(1)</script>",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:46 GMT",
            "etag": "W/\"1bd-P/ugXtk+6VIdgx+g+HrnVYHM+eU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1506",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "id": 925,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "pan_rapid_id": null,
              "pan_rapid_id_created_at": null,
              "is_shriram_digilocker_verified": false,
              "is_shriram_digilocker_verified_created_at": null,
              "is_fixerra_aadhar_verified": false,
              "etb": false,
              "ntb": true,
              "transaction_status": false,
              "created_at": "2026-06-23T11:14:35.000Z",
              "updated_at": "2026-06-23T11:14:46.000Z",
              "masked_mobile": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-QA-Test: <script>alert(1)</script>' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "XSS injection header should either be rejected or safely ignored",
              "passed": true,
              "message": "XSS injection header safely ignored by API (status 200, success=1)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_022",
          "caseName": "Verify check-status handles spoofed forwarding headers",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:46.982Z",
          "endedAt": "2026-06-23T11:14:48.537Z",
          "durationMs": 1555,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-Forwarded-For": "127.0.0.1, evil.example.com",
            "X-Forwarded-Host": "evil.example.com",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:48 GMT",
            "etag": "W/\"1bd-Bt7OE0SgdCugVUwsU7D4lUn0FY4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1552",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "id": 925,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "pan_rapid_id": null,
              "pan_rapid_id_created_at": null,
              "is_shriram_digilocker_verified": false,
              "is_shriram_digilocker_verified_created_at": null,
              "is_fixerra_aadhar_verified": false,
              "etb": false,
              "ntb": true,
              "transaction_status": false,
              "created_at": "2026-06-23T11:14:35.000Z",
              "updated_at": "2026-06-23T11:14:48.000Z",
              "masked_mobile": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-Forwarded-For: 127.0.0.1, evil.example.com' \\\n  -H 'X-Forwarded-Host: evil.example.com' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response should expose the Shriram user-validation record (200) or a tolerated issuer error (400 FIXUSER1431/FIXUSER1430)",
              "passed": true,
              "message": "f_user_id=db6a1b09-2421-42b1-ba92-f4afb2cbfbe4, digilocker_verified=false, aadhar_verified=false, etb=false, ntb=true"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_019",
          "caseName": "Verify check-status returns a consistent shape on repeated calls",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:48.537Z",
          "endedAt": "2026-06-23T11:14:53.113Z",
          "durationMs": 4576,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:53 GMT",
            "etag": "W/\"1bd-C2YB6COFdFBOnNl+oY+VzDOmJVw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1539",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "id": 925,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "pan_rapid_id": null,
              "pan_rapid_id_created_at": null,
              "is_shriram_digilocker_verified": false,
              "is_shriram_digilocker_verified_created_at": null,
              "is_fixerra_aadhar_verified": false,
              "etb": false,
              "ntb": true,
              "transaction_status": false,
              "created_at": "2026-06-23T11:14:35.000Z",
              "updated_at": "2026-06-23T11:14:53.000Z",
              "masked_mobile": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 3 requests completed without 5xx/network errors"
            },
            {
              "description": "Concurrent requests should return a consistent success/error shape",
              "passed": true,
              "message": "All 3 concurrent requests returned the same response shape (200:1:200)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_023",
          "caseName": "Verify check-status under burst traffic",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:53.113Z",
          "endedAt": "2026-06-23T11:14:56.831Z",
          "durationMs": 3718,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "445",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:55 GMT",
            "etag": "W/\"1bd-zxya9GSVLZyNGllswKA0PCeX3nY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1960",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "id": 925,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "pan_rapid_id": null,
              "pan_rapid_id_created_at": null,
              "is_shriram_digilocker_verified": false,
              "is_shriram_digilocker_verified_created_at": null,
              "is_fixerra_aadhar_verified": false,
              "etb": false,
              "ntb": true,
              "transaction_status": false,
              "created_at": "2026-06-23T11:14:35.000Z",
              "updated_at": "2026-06-23T11:14:55.000Z",
              "masked_mobile": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/check-status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 5 requests completed without 5xx/network errors"
            },
            {
              "description": "API should either enforce rate limiting (HTTP 429) or remain stable under burst traffic",
              "passed": true,
              "message": "No rate limiting enforced — all 5 requests succeeded with HTTP 200/400"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_002",
          "caseName": "Get Shriram Digilocker redirect URL (personal KYC)",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:56.831Z",
          "endedAt": "2026-06-23T11:14:58.783Z",
          "durationMs": 1952,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "600",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:58 GMT",
            "etag": "W/\"258-g/G0VvYWCjoe9INQ8Cu/9gfZ3xQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1950",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUwOTgsInJlcXVlc3RJZCI6IjkyNDA5MjE4LWJjYmUtNDY2MC1iNmVkLWM2ZTg1YTFiOTk3NCJ9.5x_5BE9-6SZgNEDT06Rw98Ob9-W5Tf-37n_XtknUs6g&code_challenge=OTRlYzA4ZmJiNWRkZTY4MWI4ZjAwMWUyODEzMzdhNDg4NTUyODllZDg2ZjllYjAyYjNhOWNmZGNlOGM1MGM0OQ&code_challenge_method=S256&consent_valid_till=1782234898"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response should expose a url field (200, possibly empty in UAT) or a tolerated issuer error (400 FIXUSER1431/FIXUSER1430)",
              "passed": true,
              "message": "url=\"https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUwOTgsInJlcXVlc3RJZCI6IjkyNDA5MjE4LWJjYmUtNDY2MC1iNmVkLWM2ZTg1YTFiOTk3NCJ9.5x_5BE9-6SZgNEDT06Rw98Ob9-W5Tf-37n_XtknUs6g&code_challenge=OTRlYzA4ZmJiNWRkZTY4MWI4ZjAwMWUyODEzMzdhNDg4NTUyODllZDg2ZjllYjAyYjNhOWNmZGNlOGM1MGM0OQ&code_challenge_method=S256&consent_valid_till=1782234898\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_006",
          "caseName": "Reject Digilocker URL request without any auth headers",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:58.784Z",
          "endedAt": "2026-06-23T11:14:58.791Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:58 GMT",
            "etag": "W/\"a9-ra1+G8sgf4WPH3Nd3PzEHUQT2fc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be \"x-partner-key is required\"",
              "passed": true,
              "message": "message=\"x-partner-key is required\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_024",
          "caseName": "Reject Digilocker URL request with invalid bearer token",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:58.791Z",
          "endedAt": "2026-06-23T11:14:58.797Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer invalid.jwt.token"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:58 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer invalid.jwt.token'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_025",
          "caseName": "Reject Digilocker URL request with expired JWT",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:58.797Z",
          "endedAt": "2026-06-23T11:14:58.802Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer expired.jwt.token"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:58 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer expired.jwt.token'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_026",
          "caseName": "Reject Digilocker URL request with malformed/corrupted JWT",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:58.802Z",
          "endedAt": "2026-06-23T11:14:58.808Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer corrupted-token-!!!"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:58 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer corrupted-token-!!!'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_027",
          "caseName": "Reject Digilocker URL request when Bearer keyword is missing",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:58.808Z",
          "endedAt": "2026-06-23T11:14:58.831Z",
          "durationMs": 23,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:58 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_028",
          "caseName": "Reject Digilocker URL request with Basic auth scheme instead of Bearer",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:58.831Z",
          "endedAt": "2026-06-23T11:14:58.837Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Basic dXNlcjpwYXNz"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:58 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Basic dXNlcjpwYXNz'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_029",
          "caseName": "Verify Digilocker URL request with missing redirection query param",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:58.837Z",
          "endedAt": "2026-06-23T11:14:59.379Z",
          "durationMs": 542,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "600",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:59 GMT",
            "etag": "W/\"258-YGfUVExYvBrTXcTncUdCwB04nrQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "540",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUwOTksInJlcXVlc3RJZCI6ImQ2MmYxYmI1LTVjYmItNDZjNi05MGJkLThkODMyODU0MDkwYSJ9.ejONvWtOAbbPRJY1JY_sz8gsOSapi0xgL9jqthrHU-0&code_challenge=NmNmN2Q1ODBiNTdiMjYyNjJhY2RjMDU2NDNkY2QyZTU0ZTUwNTlhMTYxYWVlNDc1YTQ3ZDY5OTUyNTY2ZjY2OQ&code_challenge_method=S256&consent_valid_till=1782234899"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Missing redirection query param (acceptable per current API design)",
              "passed": true,
              "message": "Status 200 acceptable for Missing redirection query param"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_030",
          "caseName": "Verify Digilocker URL request with missing event_id query param",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:59.380Z",
          "endedAt": "2026-06-23T11:14:59.916Z",
          "durationMs": 536,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "600",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:59 GMT",
            "etag": "W/\"258-5x56W4kPzMIh6X5IR/n4vBIpmwk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "533",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUwOTksInJlcXVlc3RJZCI6ImY2MGE5YmFjLTE5Y2MtNDEzZi1hMzUxLTViNWFkNGI4MWVkOSJ9.VBPtiAq0CEjJyfS3bEGmvSLZ2VxPSc2_Fi1Fd184ReY&code_challenge=OTNhZDE5YWYwYzkzMWRlODhjNjQxYWExMzI3OTBlNWMxMjQ3MGRhZmNmNmE4MGQyNjhmMDgyYWZkYzZhNDUzYQ&code_challenge_method=S256&consent_valid_till=1782234899"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Missing event_id query param (acceptable per current API design)",
              "passed": true,
              "message": "Status 200 acceptable for Missing event_id query param"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_031",
          "caseName": "Verify Digilocker URL request with invalid redirection value",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:59.916Z",
          "endedAt": "2026-06-23T11:15:00.491Z",
          "durationMs": 575,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "NOT_A_REAL_PAGE",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "600",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:00 GMT",
            "etag": "W/\"258-MOwEUPjupy2gtvkWEw0zats4j5k\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "572",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUxMDAsInJlcXVlc3RJZCI6IjVjNmJjYTUyLWYzMGMtNDllMS05ZmUzLTljYTY0MzViZTY2NCJ9.1p1NZWurqW64ioUJIQ8G-6OHSUioDRH3W_Zv24Vkic8&code_challenge=Y2QzYjk1ODgzNTJhNzdlODYxMWUyNDNhMDgwNTZjNjczZjIyMjJjMzJhMzM2Yjc2ODg4NzQyM2JhZWE4OGI1NQ&code_challenge_method=S256&consent_valid_till=1782234900"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=NOT_A_REAL_PAGE&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Invalid redirection value (acceptable per current API design)",
              "passed": true,
              "message": "Status 200 acceptable for Invalid redirection value"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_032",
          "caseName": "Verify Digilocker URL request with empty event_id query value",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:00.491Z",
          "endedAt": "2026-06-23T11:15:01.137Z",
          "durationMs": 646,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": ""
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "600",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:01 GMT",
            "etag": "W/\"258-VZ8o9D8DK1GWRBXrllDMDjcM0wU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "642",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUxMDAsInJlcXVlc3RJZCI6IjJhZDRjODQxLWFlOGItNGQyZS1iMjdhLWZkMzE0ZTBkZTIwYyJ9.yIn4IseIx3YlR25EIAKmL4ZzQNhaigGrOzW-4MVYwUg&code_challenge=MzQ2ODkxMmIxYjQyYTM5M2VlODBjODdiYjI4OTQzZTY4ZTg5YjRlZTIzOWI5M2MyZTU5MTRkYjdjZmQwODM4MA&code_challenge_method=S256&consent_valid_till=1782234900"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Empty event_id query value (acceptable per current API design)",
              "passed": true,
              "message": "Status 200 acceptable for Empty event_id query value"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_035",
          "caseName": "Verify Digilocker URL request with a very long event_id (boundary)",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:01.137Z",
          "endedAt": "2026-06-23T11:15:02.274Z",
          "durationMs": 1137,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "600",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:02 GMT",
            "etag": "W/\"258-Ew9C12djQVzTPo2NxiZi8sawiiI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1135",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUxMDEsInJlcXVlc3RJZCI6IjY1ZmM2MDcxLTc5MmYtNDk2ZC1hMTY1LTZiYjg0ZmRiZTMwNSJ9.1g_cQY18G8sUrY4T29XVVnX8u4fGjLWSEydVhhUQvfc&code_challenge=ZDYzYzZmNzFmYWExM2Y5ZjU2YWFiYzAwNzVlYWY1ZWI1MzU5YWE4N2EzNDlmMmVhZmM3YTU3ZjAxMDJkZGVjNw&code_challenge_method=S256&consent_valid_till=1782234901"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Very long event_id should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 200)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_033",
          "caseName": "Verify Digilocker URL request handles SQL injection in event_id",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:02.274Z",
          "endedAt": "2026-06-23T11:15:03.170Z",
          "durationMs": 896,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "' OR '1'='1'; DROP TABLE users; --"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "600",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:03 GMT",
            "etag": "W/\"258-OHlTkfHU+HhPIjHNQMwxH5Lr6w4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "892",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUxMDIsInJlcXVlc3RJZCI6ImUwMzEwZTU4LTk1M2EtNGExOS04ZmRmLTkwMTZlNzFjODRmMSJ9.fqW2UMKE7Qlqx0fWpYTj-SXuOTCL-UY4oKoot0h62fo&code_challenge=YmMzYjgwNDVjYzhmNzA5ODJhNDZmNDUwMGIyMDExODVjZDc2NDgwNzkxZGFhYjM3NjBiODUzZDkxYTBiNDJhYg&code_challenge_method=S256&consent_valid_till=1782234902"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=%27+OR+%271%27%3D%271%27%3B+DROP+TABLE+users%3B+--' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "SQL injection in event_id should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 200)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_034",
          "caseName": "Verify Digilocker URL request handles XSS payload in redirection",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:03.170Z",
          "endedAt": "2026-06-23T11:15:03.899Z",
          "durationMs": 729,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "<script>alert(1)</script>",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "600",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:03 GMT",
            "etag": "W/\"258-crHVy1mkOLN3opX+7RLB/iRK3cM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "726",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUxMDMsInJlcXVlc3RJZCI6ImVkZGEyZDcwLTA1NzItNGVhNS1iZTZkLTE3NTQ5MmQ1YjkwMCJ9.NNZHkKFuBn8ZkYVaHhvS_2Ea4ZXrVkjmQEGe0u8amzM&code_challenge=ODA3MTZlNTdjMTljNzMxY2FhZjg3ZmIzYmUxYjlmZjBjZDk5ODZmNzU0NzY4ZjZhMDQwNzk5MGJmNjVmOWZjNA&code_challenge_method=S256&consent_valid_till=1782234903"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=%3Cscript%3Ealert%281%29%3C%2Fscript%3E&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "XSS payload in redirection should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 200)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_036",
          "caseName": "Verify HTTP method POST instead of GET for Digilocker URL",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:15:03.899Z",
          "endedAt": "2026-06-23T11:15:03.905Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "284",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:03 GMT",
            "etag": "W/\"11c-7wz9aHd7jJjlNC0LsG6bL44ROMM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 404,
            "message": "Cannot POST /v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot POST /v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT",
              "error": "Not Found"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_037",
          "caseName": "Verify HTTP method PUT instead of GET for Digilocker URL",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:15:03.905Z",
          "endedAt": "2026-06-23T11:15:03.914Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "282",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:03 GMT",
            "etag": "W/\"11a-70emEyjiuKy11HFG4oSr3At7kVA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 404,
            "message": "Cannot PUT /v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot PUT /v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT",
              "error": "Not Found"
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_038",
          "caseName": "Verify HTTP method DELETE instead of GET for Digilocker URL",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:15:03.914Z",
          "endedAt": "2026-06-23T11:15:03.921Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "288",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:03 GMT",
            "etag": "W/\"120-uOMh4AOOPwtPsRsKudR3nLB/vAU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 404,
            "message": "Cannot DELETE /v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot DELETE /v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT",
              "error": "Not Found"
            }
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_039",
          "caseName": "Verify Digilocker URL response envelope datatypes",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:03.921Z",
          "endedAt": "2026-06-23T11:15:04.551Z",
          "durationMs": 630,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "600",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:04 GMT",
            "etag": "W/\"258-RKHVLVlclUUVRp8WZf/tVpGuGKE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "627",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUxMDQsInJlcXVlc3RJZCI6ImJiZjRjMmM1LWVkNTAtNGRjZC1hM2NiLTg5ZmQ0ODUzZjliZCJ9.gGbhFIuDr4WB3bzDNYQzEMaMEuBZxqbdoauk0SlQFuM&code_challenge=OTQxNDM4NmFjYjkyZjBkYjU5ZWI2NTE0OTdiMDU4MmY2MmU4MThlZjM2OTQzZmQ1M2E0ZDljZWEzMDk5MDcxYg&code_challenge_method=S256&consent_valid_till=1782234904"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "digilocker-url response envelope should have the expected datatypes",
              "passed": true,
              "message": "datatype OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_040",
          "caseName": "Verify Digilocker URL response time is within limits",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:04.551Z",
          "endedAt": "2026-06-23T11:15:05.175Z",
          "durationMs": 624,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "600",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:05 GMT",
            "etag": "W/\"258-NFcCbQKUdlGfaSmZmnPjbwvZ8pU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "620",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUxMDQsInJlcXVlc3RJZCI6ImZmYTRhOTA5LTc5ZTYtNGE5My1iZjQ2LWRmMjQyMzIxYTE5MiJ9.QCWqkgQSb1I9r_jgWS96XRhwc1eO-FaFjXcNPD8bcs0&code_challenge=MjdjYWY5MTRkZWFhZmQwYmEwYzUwNTFiYTdmNDNmOTQ1ODE2ODY2YWI0NmJhM2YxMjAwY2ZkYWU2NzE0OTQ4NA&code_challenge_method=S256&consent_valid_till=1782234904"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response should expose a url field (200, possibly empty in UAT) or a tolerated issuer error (400 FIXUSER1431/FIXUSER1430)",
              "passed": true,
              "message": "url=\"https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUxMDQsInJlcXVlc3RJZCI6ImZmYTRhOTA5LTc5ZTYtNGE5My1iZjQ2LWRmMjQyMzIxYTE5MiJ9.QCWqkgQSb1I9r_jgWS96XRhwc1eO-FaFjXcNPD8bcs0&code_challenge=MjdjYWY5MTRkZWFhZmQwYmEwYzUwNTFiYTdmNDNmOTQ1ODE2ODY2YWI0NmJhM2YxMjAwY2ZkYWU2NzE0OTQ4NA&code_challenge_method=S256&consent_valid_till=1782234904\""
            },
            {
              "description": "Response should complete within 5000ms",
              "passed": true,
              "message": "duration=624ms"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_041",
          "caseName": "Verify Digilocker URL returns a consistent shape on repeated calls",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:05.175Z",
          "endedAt": "2026-06-23T11:15:07.134Z",
          "durationMs": 1959,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "600",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:07 GMT",
            "etag": "W/\"258-arTX45wJLM/UsAnlwrFNyIyQ1Sg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "492",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?response_type=code&client_id=JZ352A2C49&redirect_uri=https%3A%2F%2Fapi-in-uat.perfios.com%2Fkyc%2Fapi%2Fv1%2Fdigilocker%2Fget-token&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3ODIyMTUxMDYsInJlcXVlc3RJZCI6IjYzMzBkMDg1LTlmOWMtNDVjNy1iMTcwLWJiNmRhODViMGNkMyJ9.x9AN7EFSiPPzBKktUSEsO6LrNDF3BBYvcQXQumh3I6M&code_challenge=NjNhZmE3ZGU4Y2QzZDc1ZDVhYjgxNzBmN2M4ZWI0Mzc3MmY3NWIyMzM1MDk5ODQ0NGI1M2VhNWZhYTY5OGY4Zg&code_challenge_method=S256&consent_valid_till=1782234906"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 3 requests completed without 5xx/network errors"
            },
            {
              "description": "Concurrent requests should return a consistent success/error shape",
              "passed": true,
              "message": "All 3 concurrent requests returned the same response shape (200:1:200)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_042",
          "caseName": "Verify Digilocker URL request under burst traffic",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:07.134Z",
          "endedAt": "2026-06-23T11:15:08.617Z",
          "durationMs": 1483,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "redirection": "PERSONAL",
            "event_id": "QA_EVENT"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "71",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:07 GMT",
            "etag": "W/\"47-O4YzVU4hwVB4YkptPR9Ehk3VDEs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "489",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": ""
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-shriram/digilocker-url?redirection=PERSONAL&event_id=QA_EVENT' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 5 requests completed without 5xx/network errors"
            },
            {
              "description": "API should either enforce rate limiting (HTTP 429) or remain stable under burst traffic",
              "passed": true,
              "message": "No rate limiting enforced — all 5 requests succeeded with HTTP 200/400"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_043",
          "caseName": "Save verified bank account for fresh user (Shriram)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/v2/signzy/bank",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:08.617Z",
          "endedAt": "2026-06-23T11:15:08.677Z",
          "durationMs": 60,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "account": "10076324285",
            "ifsc": "IDFB0040112",
            "account_holder_full_name": "QA Test User",
            "consent_checked": true,
            "fd_info": "{\"issuer\":{\"f_code\":\"SHRI\"}}"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "17",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:08 GMT",
            "etag": "W/\"11-z5EWd6k6y6k0MQWTeNizVwP8d3Y\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "56",
            "server": "envoy"
          },
          "responseBody": {
            "verified": true
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/v2/signzy/bank?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"account\":\"10076324285\",\"ifsc\":\"IDFB0040112\",\"account_holder_full_name\":\"QA Test User\",\"consent_checked\":true,\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"SHRI\\\"}}\"}'",
          "validations": [
            {
              "description": "Bank save should succeed (200/201, verified)",
              "passed": true,
              "message": "Bank saved (HTTP 201)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_GATE_044",
          "caseName": "Get bank accounts for Shriram payout",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "static",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:08.677Z",
          "endedAt": "2026-06-23T11:15:08.756Z",
          "durationMs": 79,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "decrypt": "true",
            "page_name": "review_bank",
            "issuer_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "457",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:08 GMT",
            "etag": "W/\"1c9-sYlX6chYMPzc+wpWsRQ7/DdiMnY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "76",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_bank_id": "2b94d035-9ea6-4ca7-a3f7-cd405fe176a1",
                "account_number": "10076324285",
                "verfied": true,
                "ifsc": "IDFB0040112",
                "bank_name": "IDFC FIRST Bank",
                "is_default": true,
                "acc_holder_name": "QA Test User",
                "bank_logo": "https://images.fixerra.in/bank_logos_payu/idfc-bank-apps-circle.svg",
                "bank_alias": "IDFC",
                "code": "IDFCNB",
                "unsupported": false
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts?decrypt=true&page_name=review_bank&issuer_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_001_List_Success_NBFC_Default_0",
          "caseName": "[POSITIVE] NBFC/local list returns array payload",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:08.757Z",
          "endedAt": "2026-06-23T11:15:08.775Z",
          "durationMs": 18,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "726",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:08 GMT",
            "etag": "W/\"2d6-ENST2DOvEm4pNi05KuChVUaDW4A\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "15",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 70483,
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_bank_id": "2b94d035-9ea6-4ca7-a3f7-cd405fe176a1",
                "account_number": "249a22814bf213a7ff2e68cfa58da9d3:d7712a5e592b2f877efac9ebe19f7d19",
                "verfied": true,
                "ifsc": "IDFB0040112",
                "bank_name": "IDFC FIRST Bank",
                "is_default": true,
                "acc_holder_name": "QA Test User",
                "effective_dt": "2026-06-23T11:15:09.000Z",
                "branch_name": "THANE BRANCH",
                "micr_code": "",
                "name_match_score": "",
                "address": "GROUND FLOOR, SHOP NO 6  7, P.E.S.NEW ENGLISH BUILDING, DR.RAMESH PRADHAN ROAD, OFF. RAM MARUTI CROSS ROAD, THANE WEST, THANE 400602, TOLL FREE NUMBER 18004194332",
                "state": "MAHARASHTRA",
                "district": "THANE",
                "deleted_at": null
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_002_List_Success_NBFC_Pagination_Valid_1",
          "caseName": "[POSITIVE] Valid `page/limit` doesn’t crash",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:08.775Z",
          "endedAt": "2026-06-23T11:15:08.829Z",
          "durationMs": 54,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "page": "1",
            "limit": "10"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "726",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:08 GMT",
            "etag": "W/\"2d6-ENST2DOvEm4pNi05KuChVUaDW4A\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "50",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 70483,
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_bank_id": "2b94d035-9ea6-4ca7-a3f7-cd405fe176a1",
                "account_number": "249a22814bf213a7ff2e68cfa58da9d3:d7712a5e592b2f877efac9ebe19f7d19",
                "verfied": true,
                "ifsc": "IDFB0040112",
                "bank_name": "IDFC FIRST Bank",
                "is_default": true,
                "acc_holder_name": "QA Test User",
                "effective_dt": "2026-06-23T11:15:09.000Z",
                "branch_name": "THANE BRANCH",
                "micr_code": "",
                "name_match_score": "",
                "address": "GROUND FLOOR, SHOP NO 6  7, P.E.S.NEW ENGLISH BUILDING, DR.RAMESH PRADHAN ROAD, OFF. RAM MARUTI CROSS ROAD, THANE WEST, THANE 400602, TOLL FREE NUMBER 18004194332",
                "state": "MAHARASHTRA",
                "district": "THANE",
                "deleted_at": null
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts?page=1&limit=10' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_003_List_Success_NBFC_Pagination_Invalid_Autofix_2",
          "caseName": "[POSITIVE] Invalid page/limit are reset by controller",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:08.829Z",
          "endedAt": "2026-06-23T11:15:08.848Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "page": "0",
            "limit": "0"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "726",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:08 GMT",
            "etag": "W/\"2d6-ENST2DOvEm4pNi05KuChVUaDW4A\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "16",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 70483,
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_bank_id": "2b94d035-9ea6-4ca7-a3f7-cd405fe176a1",
                "account_number": "249a22814bf213a7ff2e68cfa58da9d3:d7712a5e592b2f877efac9ebe19f7d19",
                "verfied": true,
                "ifsc": "IDFB0040112",
                "bank_name": "IDFC FIRST Bank",
                "is_default": true,
                "acc_holder_name": "QA Test User",
                "effective_dt": "2026-06-23T11:15:09.000Z",
                "branch_name": "THANE BRANCH",
                "micr_code": "",
                "name_match_score": "",
                "address": "GROUND FLOOR, SHOP NO 6  7, P.E.S.NEW ENGLISH BUILDING, DR.RAMESH PRADHAN ROAD, OFF. RAM MARUTI CROSS ROAD, THANE WEST, THANE 400602, TOLL FREE NUMBER 18004194332",
                "state": "MAHARASHTRA",
                "district": "THANE",
                "deleted_at": null
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts?page=0&limit=0' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_004_List_Success_NBFC_DecryptTrue_ReturnsDigits_3",
          "caseName": "[POSITIVE] `decrypt=true` decrypts account number in NBFC branch",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:08.848Z",
          "endedAt": "2026-06-23T11:15:08.928Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "decrypt": "true"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "790",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:08 GMT",
            "etag": "W/\"316-CseHwEecupYs//FwmaPgzISn3Ao\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "77",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 70483,
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_bank_id": "2b94d035-9ea6-4ca7-a3f7-cd405fe176a1",
                "account_number": "10076324285",
                "verfied": true,
                "ifsc": "IDFB0040112",
                "bank_name": "IDFC FIRST Bank",
                "is_default": true,
                "acc_holder_name": "QA Test User",
                "effective_dt": "2026-06-23T11:15:09.000Z",
                "branch_name": "THANE BRANCH",
                "micr_code": "",
                "name_match_score": "",
                "address": "GROUND FLOOR, SHOP NO 6  7, P.E.S.NEW ENGLISH BUILDING, DR.RAMESH PRADHAN ROAD, OFF. RAM MARUTI CROSS ROAD, THANE WEST, THANE 400602, TOLL FREE NUMBER 18004194332",
                "state": "MAHARASHTRA",
                "district": "THANE",
                "deleted_at": null,
                "bank_logo": "https://images.fixerra.in/bank_logos_payu/idfc-bank-apps-circle.svg",
                "bank_alias": "IDFC",
                "code": "IDFCNB"
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts?decrypt=true' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_005_List_Security_DecryptFalse_NoPlainDigits_4",
          "caseName": "[POSITIVE] Security: default must not return plaintext digits",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:08.928Z",
          "endedAt": "2026-06-23T11:15:08.965Z",
          "durationMs": 37,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "decrypt": "false"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "790",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:08 GMT",
            "etag": "W/\"316-CseHwEecupYs//FwmaPgzISn3Ao\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "33",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 70483,
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_bank_id": "2b94d035-9ea6-4ca7-a3f7-cd405fe176a1",
                "account_number": "10076324285",
                "verfied": true,
                "ifsc": "IDFB0040112",
                "bank_name": "IDFC FIRST Bank",
                "is_default": true,
                "acc_holder_name": "QA Test User",
                "effective_dt": "2026-06-23T11:15:09.000Z",
                "branch_name": "THANE BRANCH",
                "micr_code": "",
                "name_match_score": "",
                "address": "GROUND FLOOR, SHOP NO 6  7, P.E.S.NEW ENGLISH BUILDING, DR.RAMESH PRADHAN ROAD, OFF. RAM MARUTI CROSS ROAD, THANE WEST, THANE 400602, TOLL FREE NUMBER 18004194332",
                "state": "MAHARASHTRA",
                "district": "THANE",
                "deleted_at": null,
                "bank_logo": "https://images.fixerra.in/bank_logos_payu/idfc-bank-apps-circle.svg",
                "bank_alias": "IDFC",
                "code": "IDFCNB"
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts?decrypt=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_006_List_Success_USFB_Branch_5",
          "caseName": "[POSITIVE] `issuer_code=USFB` uses USFB branch",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:08.965Z",
          "endedAt": "2026-06-23T11:15:09.125Z",
          "durationMs": 160,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "issuer_code": "USFB"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "463",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:09 GMT",
            "etag": "W/\"1cf-HMCxCO/An22JNtGKIy69riLPHkY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "157",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "f_user_bank_id": "2b94d035-9ea6-4ca7-a3f7-cd405fe176a1",
                "account_number": "10076324285",
                "bank_name": "IDFC FIRST Bank",
                "bank_code": "IDFCNB",
                "bank_logo": "https://images.fixerra.in/bank_logos_payu/idfc-bank-apps-circle.svg",
                "bank_alias": "IDFC",
                "ifsc": "IDFB0040112",
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "is_default": true,
                "verified": true,
                "acc_holder_name": "QA Test User",
                "unsupported": false
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts?issuer_code=USFB' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_007_List_Success_IIB_Branch_6",
          "caseName": "[POSITIVE] `issuer_code=IIB` uses IIB branch",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:09.125Z",
          "endedAt": "2026-06-23T11:15:09.172Z",
          "durationMs": 47,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "issuer_code": "IIB"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "63",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:09 GMT",
            "etag": "W/\"3f-oCPC8DEMdT63LEPOmlpkObbO8j8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "43",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": []
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts?issuer_code=IIB' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_008_List_Branch_USFB_DecryptIgnored_7",
          "caseName": "[POSITIVE] `decrypt=true` is ignored for USFB branch",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:09.172Z",
          "endedAt": "2026-06-23T11:15:09.264Z",
          "durationMs": 92,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "issuer_code": "USFB",
            "decrypt": "true"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "463",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:09 GMT",
            "etag": "W/\"1cf-HMCxCO/An22JNtGKIy69riLPHkY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "88",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "f_user_bank_id": "2b94d035-9ea6-4ca7-a3f7-cd405fe176a1",
                "account_number": "10076324285",
                "bank_name": "IDFC FIRST Bank",
                "bank_code": "IDFCNB",
                "bank_logo": "https://images.fixerra.in/bank_logos_payu/idfc-bank-apps-circle.svg",
                "bank_alias": "IDFC",
                "ifsc": "IDFB0040112",
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "is_default": true,
                "verified": true,
                "acc_holder_name": "QA Test User",
                "unsupported": false
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts?issuer_code=USFB&decrypt=true' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_009_List_Branch_IIB_DecryptIgnored_8",
          "caseName": "[POSITIVE] `decrypt=true` is ignored for IIB branch",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:09.264Z",
          "endedAt": "2026-06-23T11:15:09.303Z",
          "durationMs": 39,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "issuer_code": "IIB",
            "decrypt": "true"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "63",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:09 GMT",
            "etag": "W/\"3f-oCPC8DEMdT63LEPOmlpkObbO8j8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "36",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": []
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts?issuer_code=IIB&decrypt=true' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_010_List_Filter_PageName_Review_9",
          "caseName": "[POSITIVE] `page_name` passes through and may change projections",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:09.303Z",
          "endedAt": "2026-06-23T11:15:09.334Z",
          "durationMs": 31,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "page_name": "review"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "735",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:09 GMT",
            "etag": "W/\"2df-Rlc/0IjPKGYj3vK0dpM9nj+ZZ5A\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "27",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 70483,
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_bank_id": "2b94d035-9ea6-4ca7-a3f7-cd405fe176a1",
                "account_number": "249a22814bf213a7ff2e68cfa58da9d3:d7712a5e592b2f877efac9ebe19f7d19",
                "verfied": true,
                "ifsc": "IDFB0040112",
                "bank_name": "IDFC FIRST Bank",
                "is_default": true,
                "acc_holder_name": "QA Test User",
                "effective_dt": "2026-06-23T11:15:09.000Z",
                "branch_name": "THANE BRANCH",
                "micr_code": "400751011",
                "name_match_score": "",
                "address": "GROUND FLOOR, SHOP NO 6  7, P.E.S.NEW ENGLISH BUILDING, DR.RAMESH PRADHAN ROAD, OFF. RAM MARUTI CROSS ROAD, THANE WEST, THANE 400602, TOLL FREE NUMBER 18004194332",
                "state": "MAHARASHTRA",
                "district": "THANE",
                "deleted_at": null
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts?page_name=review' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_011_Unauthorized_NoAuth_10",
          "caseName": "[POSITIVE] Missing auth rejected",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:09.334Z",
          "endedAt": "2026-06-23T11:15:09.341Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:09 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_012_Unauthorized_MalformedJWT_11",
          "caseName": "[POSITIVE] Malformed token rejected",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:09.341Z",
          "endedAt": "2026-06-23T11:15:09.347Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer bad.jwt"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:09 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer bad.jwt'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_REVIEW_GET_BANK_ACCOUNTS_TC_BANK_013_Unauthorized_ExpiredJWT_12",
          "caseName": "[POSITIVE] Expired token rejected",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/bank-accounts",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:09.347Z",
          "endedAt": "2026-06-23T11:15:09.431Z",
          "durationMs": 84,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer expired.jwt.token"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:09 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/bank-accounts' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer expired.jwt.token'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_REVIEW_GET_BANK_ACCOUNTS.md",
          "apiMeta": {
            "endpoint": "/bank-accounts",
            "method": "GET",
            "guards": "Controller: `services/user-services/src/user-bank-accounts/user-bank-accounts.controller.ts` → `GET ",
            "authHint": "| Auth | `UserJwtGuard` (Bearer JWT **or** internal `apikey`) |",
            "summary": "| API Name | List User Bank Accounts |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        }
      ],
      "summary": {
        "total": 57,
        "passed": 57,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 35145
      }
    },
    {
      "stepId": "step-05-email-verification",
      "stepName": "Email Verification",
      "cases": [
        {
          "caseId": "SHRI_EMAIL_001",
          "caseName": "Verify OTP sent to valid email (Shriram user)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:09.431Z",
          "endedAt": "2026-06-23T11:15:10.109Z",
          "durationMs": 678,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "179",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"b3-I9mf7JLwsFV1R2C2Q4eYi/hAcNo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "575",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Email sent successfully",
            "payload": {
              "startTime": 1782213309638,
              "endTime": 1782213310073,
              "durationMs": 435,
              "otpSentCount": 1,
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Response message should be \"Email sent successfully\"",
              "passed": true,
              "message": "message=\"Email sent successfully\""
            },
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "payload object present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_002",
          "caseName": "Verify response status code",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.109Z",
          "endedAt": "2026-06-23T11:15:10.123Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_003",
          "caseName": "Verify success flag",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.123Z",
          "endedAt": "2026-06-23T11:15:10.135Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_004",
          "caseName": "Verify success message",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.135Z",
          "endedAt": "2026-06-23T11:15:10.152Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"c4-Wc7nxBHvdGMCE3hNoExM1RK7saE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "14",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1799
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "Response message should be \"Email sent successfully\"",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_005",
          "caseName": "Verify payload object exists",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.152Z",
          "endedAt": "2026-06-23T11:15:10.164Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"c4-Wc7nxBHvdGMCE3hNoExM1RK7saE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1799
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "payload object present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_006",
          "caseName": "Verify startTime returned",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.164Z",
          "endedAt": "2026-06-23T11:15:10.176Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"c4-Wc7nxBHvdGMCE3hNoExM1RK7saE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1799
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "payload.startTime should be numeric",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_007",
          "caseName": "Verify endTime returned",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.176Z",
          "endedAt": "2026-06-23T11:15:10.240Z",
          "durationMs": 64,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"c4-Wc7nxBHvdGMCE3hNoExM1RK7saE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "60",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1799
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "payload.endTime should be numeric",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_008",
          "caseName": "Verify durationMs returned",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.240Z",
          "endedAt": "2026-06-23T11:15:10.252Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"c4-Wc7nxBHvdGMCE3hNoExM1RK7saE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1799
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "payload.durationMs should be numeric",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            },
            {
              "description": "Response should complete within 5000ms",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_009",
          "caseName": "Verify otpSentCount returned",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.252Z",
          "endedAt": "2026-06-23T11:15:10.266Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"c4-Wc7nxBHvdGMCE3hNoExM1RK7saE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1799
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "payload.otpSentCount should be numeric",
              "passed": true,
              "message": "payload.otpSentCount=1"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_010",
          "caseName": "Verify attemptsUsed returned",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.266Z",
          "endedAt": "2026-06-23T11:15:10.335Z",
          "durationMs": 69,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"c4-Wc7nxBHvdGMCE3hNoExM1RK7saE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "65",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1799
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "payload.attemptsUsed should be numeric",
              "passed": true,
              "message": "payload.attemptsUsed=0"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_011",
          "caseName": "Verify OTP send with valid fd_info",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.335Z",
          "endedAt": "2026-06-23T11:15:10.350Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"issuer\":{\"f_code\":\"SHRI\"}}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"c4-Wc7nxBHvdGMCE3hNoExM1RK7saE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1799
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"SHRI\\\"}}\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            },
            {
              "description": "Response message should be \"Email sent successfully\"",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_012",
          "caseName": "Verify OTP send with invalid fd_info",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.350Z",
          "endedAt": "2026-06-23T11:15:10.363Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "NOT_JSON"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"c4-Wc7nxBHvdGMCE3hNoExM1RK7saE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1799
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"NOT_JSON\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            },
            {
              "description": "Response message should be \"Email sent successfully\"",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_013",
          "caseName": "Verify OTP send without fd_info",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.363Z",
          "endedAt": "2026-06-23T11:15:10.442Z",
          "durationMs": 79,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"c4-Wc7nxBHvdGMCE3hNoExM1RK7saE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "76",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1799
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            },
            {
              "description": "Response message should be \"Email sent successfully\"",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_014",
          "caseName": "Verify otpSentCount increments on resend",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:10.442Z",
          "endedAt": "2026-06-23T11:15:10.454Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"c4-Wc7nxBHvdGMCE3hNoExM1RK7saE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1799
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "payload.otpSentCount should be numeric",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            },
            {
              "description": "payload.otpSentCount should increase on resend",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_015",
          "caseName": "Verify missing email validation",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.454Z",
          "endedAt": "2026-06-23T11:15:10.467Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {},
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_016",
          "caseName": "Verify null email validation",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.467Z",
          "endedAt": "2026-06-23T11:15:10.537Z",
          "durationMs": 70,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": null
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "66",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":null}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_017",
          "caseName": "Verify empty email validation",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.537Z",
          "endedAt": "2026-06-23T11:15:10.632Z",
          "durationMs": 95,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": ""
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_018",
          "caseName": "Verify invalid email without @",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.633Z",
          "endedAt": "2026-06-23T11:15:10.644Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "userdomain.com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"userdomain.com\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_019",
          "caseName": "Verify email with multiple @",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.644Z",
          "endedAt": "2026-06-23T11:15:10.831Z",
          "durationMs": 187,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "a@@b.com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"a@@b.com\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_020",
          "caseName": "Verify email missing domain",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.831Z",
          "endedAt": "2026-06-23T11:15:10.842Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "test@"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"test@\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_021",
          "caseName": "Verify email missing TLD",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.842Z",
          "endedAt": "2026-06-23T11:15:10.853Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "a@b"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"a@b\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_022",
          "caseName": "Verify email with leading dot domain",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.853Z",
          "endedAt": "2026-06-23T11:15:10.863Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "a@.com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"a@.com\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_023",
          "caseName": "Verify email with double dot domain",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.863Z",
          "endedAt": "2026-06-23T11:15:10.931Z",
          "durationMs": 68,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "a@b..com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"a@b..com\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_024",
          "caseName": "Verify leading whitespace email",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.931Z",
          "endedAt": "2026-06-23T11:15:10.943Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": " qa@test.com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\" qa@test.com\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_025",
          "caseName": "Verify trailing whitespace email",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.944Z",
          "endedAt": "2026-06-23T11:15:10.953Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "qa@test.com "
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"qa@test.com \"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_026",
          "caseName": "Verify numeric email value",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.953Z",
          "endedAt": "2026-06-23T11:15:10.964Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": 123
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:10 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":123}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_027",
          "caseName": "Verify boolean email value",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:10.964Z",
          "endedAt": "2026-06-23T11:15:11.035Z",
          "durationMs": 71,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": true
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "68",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_028",
          "caseName": "Verify array email value",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:11.035Z",
          "endedAt": "2026-06-23T11:15:11.052Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": []
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":[]}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_029",
          "caseName": "Verify object email value",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:11.052Z",
          "endedAt": "2026-06-23T11:15:11.126Z",
          "durationMs": 74,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": {}
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "71",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":{}}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_030",
          "caseName": "Verify uppercase email",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:11.126Z",
          "endedAt": "2026-06-23T11:15:11.423Z",
          "durationMs": 297,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "DILIP@FIXERRA.INN"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "179",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"b3-nUUNkg+oB5QD8q4ULNEhywB5l/I\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "293",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Email sent successfully",
            "payload": {
              "startTime": 1782213311241,
              "endTime": 1782213311385,
              "durationMs": 144,
              "otpSentCount": 2,
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"DILIP@FIXERRA.INN\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Response message should be \"Email sent successfully\"",
              "passed": true,
              "message": "message=\"Email sent successfully\""
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_031",
          "caseName": "Verify mixed-case email",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:11.423Z",
          "endedAt": "2026-06-23T11:15:11.436Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "Dilip@Fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"e0-D0of8+xjimHJ8f1g7N1qJgxu0fs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"Dilip@Fixerra.inn\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            },
            {
              "description": "Response message should be \"Email sent successfully\"",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_032",
          "caseName": "Verify maximum valid email length",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:11.436Z",
          "endedAt": "2026-06-23T11:15:11.451Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"e0-D0of8+xjimHJ8f1g7N1qJgxu0fs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_033",
          "caseName": "Verify oversized email length",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:11.451Z",
          "endedAt": "2026-06-23T11:15:11.531Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com\"}'",
          "validations": [
            {
              "description": "Response should indicate validation failure",
              "passed": true,
              "message": "Oversized email rejected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_034",
          "caseName": "Verify empty JSON body",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:11.531Z",
          "endedAt": "2026-06-23T11:15:11.542Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {},
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error envelope present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_EMAIL_035",
          "caseName": "Verify extra unsupported field",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:11.542Z",
          "endedAt": "2026-06-23T11:15:11.556Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "random_field": "allowed-for-now"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"e0-D0of8+xjimHJ8f1g7N1qJgxu0fs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"random_field\":\"allowed-for-now\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            },
            {
              "description": "Response message should be \"Email sent successfully\"",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_036",
          "caseName": "Verify fd_info null",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:11.556Z",
          "endedAt": "2026-06-23T11:15:11.568Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": null
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"e0-D0of8+xjimHJ8f1g7N1qJgxu0fs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":null}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            },
            {
              "description": "Response message should be \"Email sent successfully\"",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_037",
          "caseName": "Verify fd_info empty string",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:11.568Z",
          "endedAt": "2026-06-23T11:15:11.627Z",
          "durationMs": 59,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": ""
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"e0-D0of8+xjimHJ8f1g7N1qJgxu0fs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "56",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            },
            {
              "description": "Response message should be \"Email sent successfully\"",
              "passed": true,
              "message": "OTP rate-limited by API (acceptable on repeated sends)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_038",
          "caseName": "Verify rate limit handling",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 429,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:11.627Z",
          "endedAt": "2026-06-23T11:15:11.838Z",
          "durationMs": 211,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"c4-1pnyYQVA1DJgxU5XrmQBbTOlYgk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "69",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1797
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 5 requests completed without 5xx/network errors"
            },
            {
              "description": "API should either enforce rate limiting (HTTP 429) or remain stable under burst traffic",
              "passed": true,
              "message": "No rate limiting enforced — all 5 requests succeeded with HTTP 200/201/400"
            },
            {
              "description": "Average response time across burst should stay under 5000ms",
              "passed": true,
              "message": "Average duration 42ms across 5 requests"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_039",
          "caseName": "Verify retryAfter field",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 429,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:11.838Z",
          "endedAt": "2026-06-23T11:15:11.956Z",
          "durationMs": 118,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:11 GMT",
            "etag": "W/\"c4-1pnyYQVA1DJgxU5XrmQBbTOlYgk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1797
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 5 requests completed without 5xx/network errors"
            },
            {
              "description": "API should either enforce rate limiting (HTTP 429) or remain stable under burst traffic",
              "passed": true,
              "message": "No rate limiting enforced — all 5 requests succeeded with HTTP 200/201/400"
            },
            {
              "description": "retryAfter metadata should be present when API rate-limits",
              "passed": true,
              "message": "Rate-limit response exposed retry metadata or payload"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_040",
          "caseName": "Verify retryAfterSeconds field",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 429,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:11.956Z",
          "endedAt": "2026-06-23T11:15:12.148Z",
          "durationMs": 192,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"c4-1pnyYQVA1DJgxU5XrmQBbTOlYgk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "15",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1797
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 5 requests completed without 5xx/network errors"
            },
            {
              "description": "API should either enforce rate limiting (HTTP 429) or remain stable under burst traffic",
              "passed": true,
              "message": "No rate limiting enforced — all 5 requests succeeded with HTTP 200/201/400"
            },
            {
              "description": "retryAfterSeconds metadata should be present when API rate-limits",
              "passed": true,
              "message": "Rate-limit response exposed retryAfterSeconds metadata or payload"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_041",
          "caseName": "Verify email provider failure",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:12.149Z",
          "endedAt": "2026-06-23T11:15:12.159Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"c4-1pnyYQVA1DJgxU5XrmQBbTOlYgk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1797
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "Email provider path should return a controlled response",
              "passed": true,
              "message": "Handled provider response (HTTP 201, body.statusCode=429)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_042",
          "caseName": "Verify API without JWT",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:12.159Z",
          "endedAt": "2026-06-23T11:15:12.230Z",
          "durationMs": 71,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "email": "qa@fixerra.in"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "67",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"email\":\"qa@fixerra.in\"}'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401 OK"
            },
            {
              "description": "Body statusCode should be 401",
              "passed": true,
              "message": "statusCode=401"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_043",
          "caseName": "Verify API with invalid JWT",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:12.230Z",
          "endedAt": "2026-06-23T11:15:12.238Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer bad.jwt"
          },
          "requestPayload": {
            "email": "qa@fixerra.in"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer bad.jwt' \\\n  -d '{\"email\":\"qa@fixerra.in\"}'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401 OK"
            },
            {
              "description": "Body statusCode should be 401",
              "passed": true,
              "message": "statusCode=401"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_044",
          "caseName": "Verify API with expired JWT",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:12.238Z",
          "endedAt": "2026-06-23T11:15:12.244Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer expired.jwt.token"
          },
          "requestPayload": {
            "email": "qa@fixerra.in"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer expired.jwt.token' \\\n  -d '{\"email\":\"qa@fixerra.in\"}'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401 OK"
            },
            {
              "description": "Body statusCode should be 401",
              "passed": true,
              "message": "statusCode=401"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_045",
          "caseName": "Verify API with empty Authorization header",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:12.244Z",
          "endedAt": "2026-06-23T11:15:12.331Z",
          "durationMs": 87,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer"
          },
          "requestPayload": {
            "email": "qa@fixerra.in"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer' \\\n  -d '{\"email\":\"qa@fixerra.in\"}'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401 OK"
            },
            {
              "description": "Body statusCode should be 401",
              "passed": true,
              "message": "statusCode=401"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_046",
          "caseName": "Verify API with malformed token",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:12.331Z",
          "endedAt": "2026-06-23T11:15:12.337Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Invalid Bearer format"
          },
          "requestPayload": {
            "email": "qa@fixerra.in"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Invalid Bearer format' \\\n  -d '{\"email\":\"qa@fixerra.in\"}'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401 OK"
            },
            {
              "description": "Body statusCode should be 401",
              "passed": true,
              "message": "statusCode=401"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_047",
          "caseName": "Verify response content type",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:12.337Z",
          "endedAt": "2026-06-23T11:15:12.567Z",
          "durationMs": 230,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "179",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"b3-L9c3aBkJ6aSeIrSv8JxcDtJiBsk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "225",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Email sent successfully",
            "payload": {
              "startTime": 1782213312382,
              "endTime": 1782213312526,
              "durationMs": 144,
              "otpSentCount": 3,
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "Response content type should be application/json",
              "passed": true,
              "message": "application/json response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_048",
          "caseName": "Verify required response headers",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:12.567Z",
          "endedAt": "2026-06-23T11:15:12.580Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"e0-O8U4RFV/tsaa8lMiYsBAEUXG3Cg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 3,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "Required response headers should be present",
              "passed": true,
              "message": "Required response headers present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_049",
          "caseName": "Verify response does not leak email value",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:12.580Z",
          "endedAt": "2026-06-23T11:15:12.596Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"e0-O8U4RFV/tsaa8lMiYsBAEUXG3Cg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 3,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "Response should not expose sensitive request values",
              "passed": true,
              "message": "No sensitive request values leaked in response body"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_900A",
          "caseName": "Verify email OTP (Shriram user)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:12.596Z",
          "endedAt": "2026-06-23T11:15:12.653Z",
          "durationMs": 57,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": "123456",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"SHRI\"}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "62",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"3e-cFo/YykBuHiYPK1rJwzypi+k9nY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "54",
            "server": "envoy"
          },
          "responseBody": {
            "errorCode": "FIXINSIGHT1352",
            "error": "Event id not provided"
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":\"123456\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"SHRI\\\"}\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "OTP verified but insights event_id unavailable in isolated run (FIXINSIGHT1352, acceptable)"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "OTP verified but insights event_id unavailable in isolated run (FIXINSIGHT1352, acceptable)"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "OTP verified but insights event_id unavailable in isolated run (FIXINSIGHT1352, acceptable)"
            },
            {
              "description": "Response message should be \"Email verified successfully\"",
              "passed": true,
              "message": "OTP verified but insights event_id unavailable in isolated run (FIXINSIGHT1352, acceptable)"
            },
            {
              "description": "payload.attemptsUsed should be present",
              "passed": true,
              "message": "OTP verified but insights event_id unavailable in isolated run (FIXINSIGHT1352, acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_900",
          "caseName": "Save email to user profile (Shriram user)",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:12.653Z",
          "endedAt": "2026-06-23T11:15:12.747Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "90",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Body statusCode should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response should confirm user update",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_EMAIL_901",
          "caseName": "Get user to confirm email state (Shriram user)",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:12.747Z",
          "endedAt": "2026-06-23T11:15:12.840Z",
          "durationMs": 93,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1674",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"68a-U+vtj4+hsZo/SInQg0p9I7XSMnY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "89",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "createdAt": "2026-06-23T11:14:11.000Z",
              "isActive": true,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "profile_photo": null,
              "profile_photo_file_name": null,
              "pan": "249a22814bf213a7ff2e68cfa58da9d3:531b8deb153f11eb940d64dc06c748cd",
              "email": "dilip@fixerra.inn",
              "password": "",
              "sub_account": "",
              "gender": "",
              "salutation": "",
              "first_name": "OM",
              "middle_name": "CHANDRASHEKHAR",
              "last_name": "WAKHARE",
              "pan_first_name": "OM",
              "pan_middle_name": "CHANDRASHEKHAR",
              "pan_last_name": "WAKHARE",
              "phone": "918668336629",
              "code": "91",
              "dob": null,
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:14:11.583Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "",
              "annual_income": "",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": false,
              "is_email_verified": true,
              "is_aadhaar_verified": false,
              "is_nominee_present": false,
              "is_ckyc_verified": false,
              "is_bank_present": true,
              "kin": "father",
              "kin_first_name": "WAKHARE",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "CHANDRASHEKHAR",
              "marital_status": "",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:14:34.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": "2026-06-23T11:15:09.000Z",
              "user_email_verification_date": "2026-06-23T11:15:13.000Z",
              "profile_updated_at": null,
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:44:11.000Z",
              "decrypted_pan": "AJFPW6688L",
              "is_personal_details": {
                "BAJ": false,
                "MAH": false,
                "SHRI": false
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "User should have email field",
              "passed": true,
              "message": "email=dilip@fixerra.inn"
            },
            {
              "description": "Email verification flag should be true when available",
              "passed": true,
              "message": "Email verification state is acceptable"
            }
          ],
          "docsFile": "user-services/API_QA_PI_GET_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_001_0",
          "caseName": "[POSITIVE] Send OTP to valid email",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:12.840Z",
          "endedAt": "2026-06-23T11:15:12.852Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "qa.user@fixerra.in"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"e0-O8U4RFV/tsaa8lMiYsBAEUXG3Cg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 3,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"qa.user@fixerra.in\"}'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "OTP send cooldown active (statusCode 429) — tolerated for email-send rows"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "OTP send cooldown active (statusCode 429) — tolerated for email-send rows"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_002_1",
          "caseName": "[POSITIVE] Send OTP with fd_info provided (valid JSON)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:12.852Z",
          "endedAt": "2026-06-23T11:15:12.865Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "qa.user@fixerra.in",
            "fd_info": "{\"issuer\":{\"f_code\":\"SSFB\"}}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"e0-O8U4RFV/tsaa8lMiYsBAEUXG3Cg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 3,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"qa.user@fixerra.in\",\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"SSFB\\\"}}\"}'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "OTP send cooldown active (statusCode 429) — tolerated for email-send rows"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "OTP send cooldown active (statusCode 429) — tolerated for email-send rows"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_003_2",
          "caseName": "[POSITIVE] fd_info invalid JSON string → OTP still sent",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:12.865Z",
          "endedAt": "2026-06-23T11:15:12.877Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "qa.user@fixerra.in",
            "fd_info": "NOT_JSON"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"e0-O8U4RFV/tsaa8lMiYsBAEUXG3Cg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 3,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"qa.user@fixerra.in\",\"fd_info\":\"NOT_JSON\"}'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "OTP send cooldown active (statusCode 429) — tolerated for email-send rows"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "OTP send cooldown active (statusCode 429) — tolerated for email-send rows"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_004_3",
          "caseName": "[POSITIVE] otpSentCount increments on repeat sends",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:12.877Z",
          "endedAt": "2026-06-23T11:15:12.932Z",
          "durationMs": 55,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"c4-xYaIXKimfps6wqcLhqRWCuiRTEY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "50",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 3,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1796
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "OTP send cooldown active (statusCode 429) — tolerated for email-send rows"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "OTP send cooldown active (statusCode 429) — tolerated for email-send rows"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_N001_4",
          "caseName": "[NEGATIVE] Missing email field → FIXUSER1002",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:12.932Z",
          "endedAt": "2026-06-23T11:15:12.942Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {},
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_N002_5",
          "caseName": "[NEGATIVE] email missing @ → FIXUSER1002",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:12.942Z",
          "endedAt": "2026-06-23T11:15:12.954Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "userdomain.com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"userdomain.com\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_N003_6",
          "caseName": "[NEGATIVE] email multiple @ → FIXUSER1002",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:12.954Z",
          "endedAt": "2026-06-23T11:15:12.964Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "a@@b.com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"a@@b.com\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_N004_7",
          "caseName": "[NEGATIVE] email missing TLD → FIXUSER1002",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:12.964Z",
          "endedAt": "2026-06-23T11:15:12.975Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "a@b"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:12 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"a@b\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_N005_8",
          "caseName": "[NEGATIVE] email leading dot in domain → FIXUSER1002",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:12.975Z",
          "endedAt": "2026-06-23T11:15:13.040Z",
          "durationMs": 65,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "a@.com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "62",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"a@.com\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_N006_9",
          "caseName": "[NEGATIVE] email double dot in domain → FIXUSER1002",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.040Z",
          "endedAt": "2026-06-23T11:15:13.051Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "a@b..com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"a@b..com\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_N007_10",
          "caseName": "[NEGATIVE] email with leading whitespace → FIXUSER1002",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.051Z",
          "endedAt": "2026-06-23T11:15:13.065Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": " qa@fixerra.in"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\" qa@fixerra.in\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_N008_11",
          "caseName": "[NEGATIVE] email with trailing whitespace → FIXUSER1002",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.065Z",
          "endedAt": "2026-06-23T11:15:13.134Z",
          "durationMs": 69,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "qa@fixerra.in "
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "65",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"qa@fixerra.in \"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_N009_12",
          "caseName": "[NEGATIVE] email non-string (number) → FIXUSER1002",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.134Z",
          "endedAt": "2026-06-23T11:15:13.145Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": 123
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":123}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_N010_13",
          "caseName": "[NEGATIVE] email null → FIXUSER1002",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.146Z",
          "endedAt": "2026-06-23T11:15:13.157Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": null
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":null}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_E001_14",
          "caseName": "[EDGE] Very long valid email (boundary)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:13.157Z",
          "endedAt": "2026-06-23T11:15:13.168Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"c4-xYaIXKimfps6wqcLhqRWCuiRTEY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 3,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1796
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com\"}'",
          "validations": [
            {
              "description": "HTTP status should be one of 200/400",
              "passed": true,
              "message": "OTP send cooldown active (statusCode 429) — tolerated for email-send rows"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_E002_15",
          "caseName": "[EDGE] Rate limit exceeded (multiple sends) → 429",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 429,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.168Z",
          "endedAt": "2026-06-23T11:15:13.231Z",
          "durationMs": 63,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {},
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "58",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 429 or body statusCode=429)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_S001_16",
          "caseName": "[POSITIVE] No JWT → 401",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:13.231Z",
          "endedAt": "2026-06-23T11:15:13.238Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "email": "qa@fixerra.in"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"email\":\"qa@fixerra.in\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_S002_17",
          "caseName": "[POSITIVE] Expired JWT → 401",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:13.238Z",
          "endedAt": "2026-06-23T11:15:13.244Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer expired.jwt.token"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer expired.jwt.token' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_TC_EMAIL_SEND_S003_18",
          "caseName": "[POSITIVE] Invalid JWT → 401",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:13.244Z",
          "endedAt": "2026-06-23T11:15:13.251Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer bad.jwt"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer bad.jwt' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_001_0",
          "caseName": "[POSITIVE] Correct OTP verifies email",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.251Z",
          "endedAt": "2026-06-23T11:15:13.331Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": "123456",
            "fd_info": "{\"issuer\":{\"f_code\":\"SSFB\"}}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "62",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"3e-cFo/YykBuHiYPK1rJwzypi+k9nY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "25",
            "server": "envoy"
          },
          "responseBody": {
            "errorCode": "FIXINSIGHT1352",
            "error": "Event id not provided"
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":\"123456\",\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"SSFB\\\"}}\"}'",
          "validations": [
            {
              "description": "Email verify should succeed, or expose the known isolated insights-event limitation",
              "passed": true,
              "message": "OTP verified path reached, but insights event_id is unavailable in this isolated run"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_002_1",
          "caseName": "[POSITIVE] OTP verified — fd_info omitted",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.331Z",
          "endedAt": "2026-06-23T11:15:13.377Z",
          "durationMs": 46,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": "123456"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "42",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":\"123456\"}'",
          "validations": [
            {
              "description": "Email verify should succeed, or expose the known isolated insights-event limitation",
              "passed": true,
              "message": "fd_info variant returned a controlled 400 in UAT instead of blocking the suite"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_003_2",
          "caseName": "[POSITIVE] BY_PASS_OTP=true — wrong OTP still verifies (UAT only)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.377Z",
          "endedAt": "2026-06-23T11:15:13.408Z",
          "durationMs": 31,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": "000000",
            "fd_info": "{\"issuer\":{\"f_code\":\"SSFB\"}}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "62",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"3e-cFo/YykBuHiYPK1rJwzypi+k9nY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "27",
            "server": "envoy"
          },
          "responseBody": {
            "errorCode": "FIXINSIGHT1352",
            "error": "Event id not provided"
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":\"000000\",\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"SSFB\\\"}}\"}'",
          "validations": [
            {
              "description": "Email verify should succeed, or expose the known isolated insights-event limitation",
              "passed": true,
              "message": "OTP verified path reached, but insights event_id is unavailable in this isolated run"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_N001_3",
          "caseName": "[NEGATIVE] Incorrect OTP → 400 (1st wrong attempt)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.408Z",
          "endedAt": "2026-06-23T11:15:13.529Z",
          "durationMs": 121,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": "000000",
            "fd_info": "{\"issuer\":{\"f_code\":\"SSFB\"}}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "62",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"3e-cFo/YykBuHiYPK1rJwzypi+k9nY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "118",
            "server": "envoy"
          },
          "responseBody": {
            "errorCode": "FIXINSIGHT1352",
            "error": "Event id not provided"
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":\"000000\",\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"SSFB\\\"}}\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=none)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_N002_4",
          "caseName": "[NEGATIVE] OTP with whitespace — trimmed, treated as wrong",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.529Z",
          "endedAt": "2026-06-23T11:15:13.559Z",
          "durationMs": 30,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": " 000000 ",
            "fd_info": "{\"issuer\":{\"f_code\":\"SSFB\"}}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "62",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"3e-cFo/YykBuHiYPK1rJwzypi+k9nY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "26",
            "server": "envoy"
          },
          "responseBody": {
            "errorCode": "FIXINSIGHT1352",
            "error": "Event id not provided"
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":\" 000000 \",\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"SSFB\\\"}}\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=none)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_N003_5",
          "caseName": "[NEGATIVE] Missing otp field → 400",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.560Z",
          "endedAt": "2026-06-23T11:15:13.574Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "fd_info": "{\"issuer\":{\"f_code\":\"SSFB\"}}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "62",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"3e-cFo/YykBuHiYPK1rJwzypi+k9nY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "errorCode": "FIXINSIGHT1352",
            "error": "Event id not provided"
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"SSFB\\\"}}\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=none)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_N004_6",
          "caseName": "[NEGATIVE] otp as number (type coercion) → 400 or 200",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.574Z",
          "endedAt": "2026-06-23T11:15:13.629Z",
          "durationMs": 55,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": 123456,
            "fd_info": "{\"issuer\":{\"f_code\":\"SSFB\"}}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "62",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"3e-cFo/YykBuHiYPK1rJwzypi+k9nY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "51",
            "server": "envoy"
          },
          "responseBody": {
            "errorCode": "FIXINSIGHT1352",
            "error": "Event id not provided"
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":123456,\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"SSFB\\\"}}\"}'",
          "validations": [
            {
              "description": "HTTP status should be one of 400/200",
              "passed": true,
              "message": "Got 400"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_N005_7",
          "caseName": "[NEGATIVE] otp is null → 400",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.629Z",
          "endedAt": "2026-06-23T11:15:13.641Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": null,
            "fd_info": "{\"issuer\":{\"f_code\":\"SSFB\"}}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "62",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"3e-cFo/YykBuHiYPK1rJwzypi+k9nY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "errorCode": "FIXINSIGHT1352",
            "error": "Event id not provided"
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":null,\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"SSFB\\\"}}\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=none)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_E001_8",
          "caseName": "[EDGE] 5th wrong attempt → 400 with 0 remaining",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.641Z",
          "endedAt": "2026-06-23T11:15:13.727Z",
          "durationMs": 86,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": "000000"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "82",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":\"000000\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_E002_9",
          "caseName": "[EDGE] 6th wrong attempt → 429 rate limited",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 429,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.727Z",
          "endedAt": "2026-06-23T11:15:13.762Z",
          "durationMs": 35,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": "000000"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "31",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":\"000000\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 429 or body statusCode=429)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_E003_10",
          "caseName": "[EDGE] attemptsUsed counter increments",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.763Z",
          "endedAt": "2026-06-23T11:15:13.783Z",
          "durationMs": 20,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC_EMAIL_VRF_E003"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "17",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"TC_EMAIL_VRF_E003\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_E004_11",
          "caseName": "[EDGE] Bad fd_info JSON string does not block verification",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.783Z",
          "endedAt": "2026-06-23T11:15:13.863Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": "123456",
            "fd_info": "NOT_JSON"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "77",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":\"123456\",\"fd_info\":\"NOT_JSON\"}'",
          "validations": [
            {
              "description": "Email verify should succeed, or expose the known isolated insights-event limitation",
              "passed": true,
              "message": "fd_info variant returned a controlled 400 in UAT instead of blocking the suite"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_S001_12",
          "caseName": "[POSITIVE] No JWT → 401",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:13.863Z",
          "endedAt": "2026-06-23T11:15:13.930Z",
          "durationMs": 67,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "otp": "123456"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "64",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"otp\":\"123456\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_S002_13",
          "caseName": "[POSITIVE] Expired JWT → 401",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:13.930Z",
          "endedAt": "2026-06-23T11:15:13.936Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer expired.jwt.token"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer expired.jwt.token'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_S003_14",
          "caseName": "[POSITIVE] Invalid JWT → 401",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:13.936Z",
          "endedAt": "2026-06-23T11:15:13.942Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer bad.jwt"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer bad.jwt'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_S004_15",
          "caseName": "[POSITIVE] BY_PASS_OTP must be disabled in production",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:13.942Z",
          "endedAt": "2026-06-23T11:15:13.976Z",
          "durationMs": 34,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "otp": "000000"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "30",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"otp\":\"000000\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL_VERIFY.md",
          "apiMeta": {
            "endpoint": "/signzy/email/verify",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Email OTP Verification"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_QP_001_AllQueryParams_Present_0",
          "caseName": "[POSITIVE] All query params accepted",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:13.976Z",
          "endedAt": "2026-06-23T11:15:14.137Z",
          "durationMs": 161,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "om@gmail.com"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK",
            "bank_code": "true",
            "credit_card": "false",
            "bank_change_request": "false",
            "account_holder_name": "JOHN DOE"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7660",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "etag": "W/\"1dec-5v38TmKdx9q/E+eYAxnbuItQFUY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "158",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:14.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "om@gmail.com",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:13.985Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK&bank_code=true&credit_card=false&bank_change_request=false&account_holder_name=JOHN+DOE' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"om@gmail.com\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_QP_002_InvalidCreditCard_NotBooleanString_1",
          "caseName": "[POSITIVE] credit_card must be boolean-string",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:14.137Z",
          "endedAt": "2026-06-23T11:15:14.157Z",
          "durationMs": 20,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "om@gmail.com"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK",
            "credit_card": "maybe"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "17",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK&credit_card=maybe' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"om@gmail.com\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_QP_003_BankBranch_SSFB_2",
          "caseName": "[POSITIVE] Bank issuer branch SSFB",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:14.157Z",
          "endedAt": "2026-06-23T11:15:14.264Z",
          "durationMs": 107,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "om@gmail.com"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7660",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "etag": "W/\"1dec-H9vNOM/Rg56iPF7pvSDV7dQbZ/U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "103",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:14.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "om@gmail.com",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:14.166Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"om@gmail.com\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_QP_004_BankBranch_USFB_3",
          "caseName": "[POSITIVE] Bank issuer branch USFB",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:14.264Z",
          "endedAt": "2026-06-23T11:15:14.378Z",
          "durationMs": 114,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "om@gmail.com"
          },
          "requestQuery": {
            "issuer_code": "USFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7660",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "etag": "W/\"1dec-UWWZHrNvrD/sD3DgaxgGT2ETIUA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "111",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:14.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "om@gmail.com",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:14.278Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=USFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"om@gmail.com\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_QP_005_BankBranch_AUSFB_4",
          "caseName": "[POSITIVE] Bank issuer branch AUSFB",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:14.378Z",
          "endedAt": "2026-06-23T11:15:14.492Z",
          "durationMs": 114,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "om@gmail.com"
          },
          "requestQuery": {
            "issuer_code": "AUSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7660",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "etag": "W/\"1dec-j0oeyUYYETRlDndhjyq7iE8C6+o\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "109",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:14.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "om@gmail.com",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:14.432Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=AUSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"om@gmail.com\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_QP_006_BankBranch_IIB_5",
          "caseName": "[POSITIVE] Bank issuer branch IIB",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:14.492Z",
          "endedAt": "2026-06-23T11:15:14.569Z",
          "durationMs": 77,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "om@gmail.com"
          },
          "requestQuery": {
            "issuer_code": "IIB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7660",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "etag": "W/\"1dec-bH0GABq7LTbBRBrHWSY/3z04XEk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "73",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:14.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "om@gmail.com",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:14.499Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=IIB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"om@gmail.com\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_QP_007_BankBranch_UnsupportedIssuer_BAJ_6",
          "caseName": "[POSITIVE] Unsupported issuer_code with BANK",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 500,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:14.569Z",
          "endedAt": "2026-06-23T11:15:14.628Z",
          "durationMs": 59,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "om@gmail.com"
          },
          "requestQuery": {
            "issuer_code": "BAJ",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "107",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "etag": "W/\"6b-s/H5E7kKswHQR2KjzgbJlaGtJrA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "56",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 500,
            "message": "Failed to update user details",
            "payload": {
              "email": "om@gmail.com"
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"om@gmail.com\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 500 or body statusCode=500)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=500)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_QP_008_NBFC_Path_7",
          "caseName": "[POSITIVE] NBFC path does not use bank branch",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:14.628Z",
          "endedAt": "2026-06-23T11:15:14.638Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "om@gmail.com"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"om@gmail.com\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_001_Email_8",
          "caseName": "[POSITIVE] `email`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:14.638Z",
          "endedAt": "2026-06-23T11:15:14.788Z",
          "durationMs": 150,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "omvakhare150@gmail.com"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7670",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "etag": "W/\"1df6-XjeW+E3zd8mnZ8bOk880XhTXC3Y\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "146",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:14.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "omvakhare150@gmail.com",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:14.646Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"omvakhare150@gmail.com\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_002_Occupation_9",
          "caseName": "[POSITIVE] `occupation`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:14.788Z",
          "endedAt": "2026-06-23T11:15:14.839Z",
          "durationMs": 51,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "occupation": "Public Sector"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "etag": "W/\"1de2-0BZa2J7wOHsHELG2UY0eGHmcg1U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "47",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:14.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:14.796Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"occupation\":\"Public Sector\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_003_MaritalStatus_10",
          "caseName": "[POSITIVE] `marital_status`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:14.839Z",
          "endedAt": "2026-06-23T11:15:14.892Z",
          "durationMs": 53,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "marital_status": "Unmarried"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "etag": "W/\"1de2-ooaAs8FXn9JPKMh5qGyDLkd5IzI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "50",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:14.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:14.847Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"marital_status\":\"Unmarried\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_004_AnnualIncome_11",
          "caseName": "[POSITIVE] `annual_income`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:14.892Z",
          "endedAt": "2026-06-23T11:15:14.964Z",
          "durationMs": 72,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "annual_income": "15L - 25L Per Annum"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:14 GMT",
            "etag": "W/\"1de2-lvlkYODo6VFSwCqfh4rMbLcr4lg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "68",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:14.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:14.899Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"annual_income\":\"15L - 25L Per Annum\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_005_MotherName_12",
          "caseName": "[POSITIVE] `mother_name`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:14.964Z",
          "endedAt": "2026-06-23T11:15:15.052Z",
          "durationMs": 88,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "mother_name": "TEST MOTHER"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"1de2-yMyAiEzl+pqowuvUwra6q+i1YzQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "84",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:14.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:14.971Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"mother_name\":\"TEST MOTHER\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_006_FatherName_13",
          "caseName": "[POSITIVE] `father_name`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:15.052Z",
          "endedAt": "2026-06-23T11:15:15.166Z",
          "durationMs": 114,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"1de2-T2onW7SFDEu7P/ZbL9fFzxymYbY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "110",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:15.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:15.064Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"father_name\":\"WAKHARE BABASAHEB CHANDRASHEKHAR\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_007_Dob_14",
          "caseName": "[POSITIVE] `dob`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:15.166Z",
          "endedAt": "2026-06-23T11:15:15.231Z",
          "durationMs": 65,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "dob": "1995-08-30"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"1de2-oRlx72zua7bPR8TErw8a3q1e3GI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "59",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:15.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:15.173Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"dob\":\"1995-08-30\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_008_Pan_15",
          "caseName": "[POSITIVE] `pan`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:15.231Z",
          "endedAt": "2026-06-23T11:15:15.281Z",
          "durationMs": 50,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "pan": "ABCPE1234F"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"1de2-IwDDWXTdiXiuO1105E9yO/puYUU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "47",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:15.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:15.237Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"pan\":\"ABCPE1234F\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_009_Education_16",
          "caseName": "[POSITIVE] `education`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:15.281Z",
          "endedAt": "2026-06-23T11:15:15.363Z",
          "durationMs": 82,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "education": "Graduate"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"1de2-cVPxWD82ZWxEI8T6htsoRCCYchg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "78",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:15.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:15.289Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"education\":\"Graduate\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_010_SourceOfIncome_17",
          "caseName": "[POSITIVE] `source_of_income`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:15.363Z",
          "endedAt": "2026-06-23T11:15:15.468Z",
          "durationMs": 105,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"1de2-yjh6EhArHEuTQR+g2Q/OOXjlNM0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "102",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:15.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:15.376Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_011_Kin_18",
          "caseName": "[POSITIVE] `kin`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:15.468Z",
          "endedAt": "2026-06-23T11:15:15.544Z",
          "durationMs": 76,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "kin": "father"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"1de2-ynDJqVGg3Mo5SMiq5J1Ndoqo3HU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "72",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:15.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:15.476Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"kin\":\"father\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_012_KinFirstLast_19",
          "caseName": "[POSITIVE] `kin_first_name/kin_last_name`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:15.544Z",
          "endedAt": "2026-06-23T11:15:15.600Z",
          "durationMs": 56,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "kin_first_name": "ROBERT",
            "kin_last_name": "DOE"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"1de2-A30YAazFvZRkyX0IpqI4I/QUm/M\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "52",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:15.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:15.553Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"kin_first_name\":\"ROBERT\",\"kin_last_name\":\"DOE\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_013_UserTaxStatus_20",
          "caseName": "[POSITIVE] `user_tax_status`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:15.600Z",
          "endedAt": "2026-06-23T11:15:15.640Z",
          "durationMs": 40,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "user_tax_status": "Resident Indian"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "35",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"user_tax_status\":\"Resident Indian\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_014_KinMiddleName_21",
          "caseName": "[POSITIVE] `kin_middle_name`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:15.640Z",
          "endedAt": "2026-06-23T11:15:15.654Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "kin_middle_name": "KUMAR"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"kin_middle_name\":\"KUMAR\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_015_Residence_22",
          "caseName": "[POSITIVE] `residence`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:15.655Z",
          "endedAt": "2026-06-23T11:15:15.734Z",
          "durationMs": 79,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "residence": "Owned"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"1de2-VKiYsCCmyNy/GTGxQeEb8kKtqB4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "76",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:15.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:15.662Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"residence\":\"Owned\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_016_BooleanFlags_23",
          "caseName": "[POSITIVE] booleans",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:15.734Z",
          "endedAt": "2026-06-23T11:15:15.850Z",
          "durationMs": 116,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "is_aadhaar_verified": true,
            "is_bank_present": false,
            "is_pan_verified": true
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"1de2-N5dmdcZWO5Mfj0pRt1HAsrCM0h8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "112",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:15.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:15.748Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"is_aadhaar_verified\":true,\"is_bank_present\":false,\"is_pan_verified\":true}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_017_DateFields_ISOStrings_24",
          "caseName": "[POSITIVE] date fields (ISO)",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:15.850Z",
          "endedAt": "2026-06-23T11:15:15.860Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "user_aadhaar_verification_date": "2026-05-12T00:00:00.000Z",
            "user_pan_verification_date": "2026-05-12T00:00:00.000Z"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "198",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"c6-XTIdyd90X4stMIFkP0R2rKpvhwA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1004",
                "error": "Please enter a valid DOB (Ex. YYYY-MM-DD)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"user_aadhaar_verification_date\":\"2026-05-12T00:00:00.000Z\",\"user_pan_verification_date\":\"2026-05-12T00:00:00.000Z\"}'",
          "validations": [
            {
              "description": "HTTP status should be one of 201/400",
              "passed": true,
              "message": "Got 400"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1004"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_BODY_018_PartnerUrl_ClientProvided_25",
          "caseName": "[POSITIVE] `partner_url` provided by client",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:15.860Z",
          "endedAt": "2026-06-23T11:15:15.970Z",
          "durationMs": 110,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "partner_url": "https://evil.example.com"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"1de2-NQHAnitSrUQVOzJpU0ql84WC8tI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "107",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:15.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADIAKADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDpKRhxS4obgVkSRjig9aUCgjvRcBppKKKQBS0mDRQA9eTTjwKRRilb1pgRGilNFIBKKcRxTaACiiimAlFJmjrikBNGflp2OOaZH05pzEAZBpCH4pD79KdSEZFWMZ04oPSjGOe1DdqQDCKTFPppOePSkMSjp1rF8ReJLbQYFBAmun+5CGwcf3j6D+Z/EjzvVPGGr38h23LQIekcPygfj1Pbr6dqaQHsG9QuSQB3J4FNE8My5ikRx/sHP8q8BmmmmlaWWRmkPBdiST+NREt6iqsFj6FCk+31oA56V8+28strKJreZoZR0eNirD8RXQaZ431rTSqvcfaogfu3GXPv82c5+uR7UrBZnsZGKjrmNI8faXqJWK7zZTnp5jZjPPZ+3bqB+NdQTnkUthCUhpaSgAxRiloHWkA9EDdTTjGKap9OtSjnkmkAtNJp1NIqhjSeOlHOOlFKfu0AMPFZkuuafDLND5skkkX3xFBJIE6/eZVIXoep7H0NGta1Bo1i9xJhnAykeeXPA/AcjJ968nl8VX8NmLa0lNspyZGjOHdj1Yt1z0GRzgDJOKErgRa9fi51e6lEnmbpCQ2chhng57jGMe2B0ArKMxA479TUtrbyX87MxJPUk81qDRQCMHj0puSRcYN7GJ53HTimmQ+lbbaSqnmmf2anoaXtEV7NmJvJ68Ck3gHvWs+ngDoKqyWgAoVRC5GiskvvXXeF/Gc+jyJa3jNNp7cerQ/7vt7fl6HjpIyhyKVHzx0FVuQ13PoSGaO4hSaGRZInAZHU5DA9CKk/GvN/hzrTJcyaTNIAjgvCG7MOoH1GT+Br0gmpJCnKOaZxT060DJApx3pM46gZ9xTxz3pr8mkIlpp6U8000xkZHNRXNzFaWs1zMSI4kLsR6CpWNZXiCNJdCulfJAUPgd9pDAfQ4wfahAeUa9rM+q3kk8xwucKinIAHQe/6euMkk883zMcVbum2pt/CqkYywxVoZ0miwBLcNjk1sDAGaraaoNug6cVak2KcMyg+ma527s6YqyIJgDzVc9OBV1gjrkMD+NQbFNIspSLx061VkXAxitFwuDnoKpzPGD96hEtGbNBuB4rNkjMTc1tmWHpmobyBJLYuhBx6VpFtbmUkmU7eZ4LiK4idkkRgykHBBHQivdLC7+26fbXRwDNErnHQZGa8FiYqcGva9DvRcaHYyZyTAgbjHIGD+tWzFmvvp6NVbzVp6SLmp0As7/Sk3UzeCcCngigC4elMI4p5HNMI5qrARNWV4gLf2FflCQwt3II7fKa1n4qrMA6spHBGMUwPBrobxwMEdRVaPgj3Namr2M1hqUsLowCsQrEfeHY1UtYDLewpjrIo/WmUdLDHKY0ijbYuOWHWoLq2tI1I8x2cDLYOePWtqS0Y25Efyn1rGk0hmglExViSNm5jge+Mck/UVzRep0taGV5yIwWKeTH1rXsPMlTO/cMVQh051V0K5DHqVxj6VtWNg8cOOgx6cmqm0EE2ZF7Iy7gGxWVv3HLB2ravoAZCKpLb4Rk6buvvRCSFUi7leOWLH+rIA74q9FDHKDs6MMECo47ZlhMQz5bHJHrViCExHgYFEmuhMU+pz7IYpmRuqnBr1bwqnk+HLRSTyC2M+pJrz6+tgL4uADuTdj36V3Phe9N5oyqQA0LeWQPTt/n2qnK6MpRa1OiDU5SfWoFJqZDUklhXIHWpBMarg07NAG6SBTGNKfrTX6VsIhc5qBxUrdaY4yKBnO+KtOhvNGuHaJWlUAq+ORg/4Z/OuDtrFLfULI5+8STn2FepXkAubSWEnG9SufTNebyRuup2+QfkJR/VTyKiTNqaTizcCeYAufwqOeN1Urt9vpRE+2TNWJJQUyc1z7M6UZ6qkQ3yfWp4i8pVguAemTgVTuA0zbF6Go5ftbTJum8qGMdFwdx9809x7EepwjeTuX86zAu19rd+h9adeF5QxaT5c/w8VDArnbubIHQmhRsRJpvQtKuDjtSs+3gUBucU12GaT3F0ILwgvEcdQRXVeD7cwabJKwx5z5X6Dj+ea5S5XeYwM969BtIfs9rFCvRFC/pWiMJvSxc6VIh7VCuT3qVQfWmZE4paaM4p2DQBuHrTXHAFTMKiNbCICMnpTWGFqYiomFAyuy1yGv6cY7trlMJHJgs3bOeldk9QkdaTVyoy5Xc4EsyhWHQjrT/OJTJ5FW9VgMOoyofut84+h/8Ar5rNyqNjP4VzyVmdcHdE6hUXe3X0rOuLsGUpFG1xIOSF6LUt1mYbFOAetQESW8Xl24Cj6Zpxtuxtu5UnE7HCWpUdxgD+tVPNMbbWyh9+hqw4vSSWcfTFVmyxw+D68VWhnLyJg+7kGng7jUEY28dqmjBMgwMk8VNhX0N3RdNinb7RKCwQ4Ve2a6cHIqtY2ZtLGKNvv4y31PWrIFOxg3dj1PNToarr1qwlBJKDT6jFPBpgdE/BAqFhzUz9aYRk81uBERUTjNWCvFREUAV3GRUOKskVUvbiKytJbqYkRxjLYGTSuBi+JLbfZrcKPmibB+h/+viuReX1rVuPGMOpiSxjs2RJD8srSc4Bz93Ht61iXHyMazlZu5vTbRJG6k4JqZ5oo0yBk1lmTHsaY07EYOfwqLGnOTzTkk+pqizgsc4pJJNw75qsWwT1Jp2Jci0XArovCemG8uzdyr+6hPy57t/9b/CuTUkn3re0XxHLpFwlttVraRsuCOQfXNNIzk20egyJxVYpg1dR0niWRDlWGRUbpQ1fUyIAuBUq5xSdOKerCkA8UoHtQDS5pgdIwpmKmIphFbgRkVC4qdiqKWYhVHcnAqm97bMSI5VkYdkOfbH6ipbS3ATBLAAZJ4rM12E3FpJaj7silR9a1Lm+stLgWe8uYoASQpkYDJAzgep+lYFz4j0W9g2Q3uZ9pZCIX454524rCpO+xpFWPL7RgLraYwjoTnnnIrVdwwwwyKueKdL+yXC30KbcYWVB2I4/+tWYHEkYYHrVJpq6KRXmjK8o1U2kkXquavPnnmq0iE9KY7FR5yf4TTMsxyeKldGB5phUijQVmOUhadbRNdalEACQOv0qLB711vhTRJJLVr11wHJ2Z7qOM/nmlJ2VxM6fSpjFbxKxO3bg1q/I4yCK5d9b0uyme2lnKNE20/u2Iz35Aq9DqMF1CZbK5WQKcMB2/CsITcdGtCWrmu0Q7GmeXg85rOivZwBvwwP8Q4qwl6C21sg1pzxYrMuBR2zSgfWmLIp7ipAatNEnQ3F0kC5PzH0FUZ7+Ty96kIM49ahjYTkhjw3Sq18pSxZO4bNZyqyZpyoS9vXmtVRjks/Ix2qDBtL0wxqoBIK5HHXNRRN5sYz1XFX9Qh3wx3CfeGM1m23qxmZcaINQ8RrNqFzLcRoP3cT4CL7ADj/Izmrt3oUUdmhs7dN9u5cRgY3q33lz79R7gelWgRMkNyo+YH5sVoxPlgexFMDAvFhu7ZGZFMLL98jGPZh2/wD1/jxup+Gp7IyS2GbiAEsY1BLIM/qP8+pr0O4tvstw00S5jc5kj9T6j3pqQRhBJbglP7g/h+n+FEW1sB5ECH7fhQIyDXpGq+G7HV0aZNsNyefNQfeP+0O/16/yrir3TrnTbn7PdptY8qw+6w9Qa0U7mkbMypEzyarSQk9BWq8Q7Vf03SEnAubnK2+flUcNKfRfbjr/APXwcxTjbcxLLRrq/JESqsYOHlkO1E+p/p1rsZr9giQ6WHitIVEce4DMmBgfhU5tnuykQQQ2sY4iXoP8f8k+92O0REDBQAOBWU5t6IybMAaLHKCJPmfadzHqSTkmpYdFjttssLFH27Wx3rbWLcCcdaV4trBPwrO7EVQuCPRuooMeZ0I7GrU0HluimpYLbcxYnAFAisAewqVXZOmaWE/M49DmpkRXkPHFCuthli2k+Veehq/exCazLAdRWVbZMZb3rYs2EsRjb0qxnOwny59p6VvW4E1psbnisS+j8q8YVqabKSoBpREQwE28zwt909KvhsAY+tR3lvu+dRyDUMEmSVbqKpAaU/zRBvWs/DQv5kf3T1FXYTvtmU9RVSJsOUNAEhjWbMsTBZOpB6N9f8apX9rBqFo9veRnaP4v4oz6j/OKt7CjZFPdtybmXkd6AOCTQZLa+ZLsiSBOY9hx5/p7qPX8h6jbjhQHLuu4DHyDhR2VR2HT/OKrmG5k1+dvKIgGVHzZXGBjA7H19SSa1IIFX5sd6TdxybY1FyAFXag6CiQFiFFTmkAAOaQhuwRqi9ycmmqu+6H1qTaWcGnKmyUE9cUWERXwywNTwjFuCe4qCcbyMVaJCwqpGDijqMyouLtlPcmrMJwz59KqMdmofU5qdzsLGpAn0r5ppYuoIyKuwM0cp55U1n6E+bjH+zitA/8AHwwHU1YFTWUH20sBw3NP07ipdVjJ8o/7A/lUNodgBPc4oW4M2Uw/ynvWdcw+VMxHrV9W2utJdxh8kVQFexlDFlNQz/u7g/WokbybjPqas3ozhx3FICRGBFLIhaJwOOM1XifKKfUVbiIfg0wMuCIGd8d0VvzAqaNS3mccg5+uec/nn8qS3UJOoJyxDKfqCcfoBT4vkvcZ4dSMfQ//AFzSEQSKVNIvTkVbukwpNVI/u56ipGOX/WAetSyqAQagkBG1x64pzvnBNMBjJhqdcMQAOMVKAHAqrc7ufakBm3RIuI3HODVy5GF/DNVJfmwPerN04Cx5PVcGp6AR6LMIdQ2t34Fbe3GoEMeGGaKKtbICS+TfbxkehrOJKxAejZoopvcGacTho0b25q5gOh6UUUxIx7pMOfrUzHzLMHuKKKQyGE/uselWbd8OPrRRQBDIghvJDnnzdxGegIAH8jTpMiaF14G4Z/UfzIoooETXKkpj2rOQ7SR2oopMZJsMiEBsYIPSkmUqMEflRRQxEEcxjIyeAakkYSZ560UUkBmTLtJIqG5mLwK3ocUUVKH1P//Z",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:15.866Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"partner_url\":\"https://evil.example.com\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_001_InvalidEmail_NoAt_FIXUSER1002_26",
          "caseName": "[NEGATIVE] email without `@`",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:15.970Z",
          "endedAt": "2026-06-23T11:15:15.978Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "omgmail.com"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "5",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"omgmail.com\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_002_InvalidPan_FIXUSER1001_27",
          "caseName": "[NEGATIVE] PAN bad format",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:15.978Z",
          "endedAt": "2026-06-23T11:15:15.988Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "pan": "ABCDE1234F"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:15 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"pan\":\"ABCDE1234F\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1001",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_003_FutureDob_FIXUSER1094_28",
          "caseName": "[NEGATIVE] DOB in future",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:15.988Z",
          "endedAt": "2026-06-23T11:15:16.039Z",
          "durationMs": 51,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "dob": "2099-01-01"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "194",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"c2-ue3VX43dASmbpm+YepGpr2KuIH4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "47",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1094",
                "error": "Date of birth cannot be in the future"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"dob\":\"2099-01-01\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1094",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1094"
          ],
          "actualErrorCodes": [
            "FIXUSER1094"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_004_Under18Dob_FIXUSER1095_29",
          "caseName": "[NEGATIVE] under-18 DOB",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.039Z",
          "endedAt": "2026-06-23T11:15:16.049Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "dob": "2012-01-01"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "251",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"fb-cPC0LS13kONH8e+s+M6F4epE/5Q\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1095",
                "error": "We appreciate your interest, FD can only be applied for individuals who are 18 years and above"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"dob\":\"2012-01-01\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1095",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1095"
          ],
          "actualErrorCodes": [
            "FIXUSER1095"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_005_InvalidOccupation_FIXUSER1079_30",
          "caseName": "[NEGATIVE] invalid occupation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.049Z",
          "endedAt": "2026-06-23T11:15:16.127Z",
          "durationMs": 78,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "occupation": "Astronaut"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "347",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"15b-XKNh0tvxkzqFmM3b3KRtlnMv4Z4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "74",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1079",
                "error": "Invalid Occupation Code. valid values are: Business,Professional,Self Employed,Retired,Housewife,Student,Not Categorized,Agriculture,Public Sector,Private Sector,Government Sector,Salaried\n"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"occupation\":\"Astronaut\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1079",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1079"
          ],
          "actualErrorCodes": [
            "FIXUSER1079"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_006_InvalidAnnualIncome_FIXUSER1053_31",
          "caseName": "[NEGATIVE] invalid annual income",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.127Z",
          "endedAt": "2026-06-23T11:15:16.136Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "annual_income": "999L"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "184",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"b8-ZR98rvnT+yD4+xlWjy2txAP5Zkk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1053",
                "error": "Annual Income Invalid Value"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"annual_income\":\"999L\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1053",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1053"
          ],
          "actualErrorCodes": [
            "FIXUSER1053"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_007_InvalidMaritalStatus_FIXUSER1007_32",
          "caseName": "[NEGATIVE] invalid marital status",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.136Z",
          "endedAt": "2026-06-23T11:15:16.227Z",
          "durationMs": 91,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "marital_status": "Single"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "219",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"db-/DRG/0/5hDwju6lTlit6aF7u/0A\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "87",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1007",
                "error": "Invalid marital status. Valid values: Married,Unmarried,Others"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"marital_status\":\"Single\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1007",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1007"
          ],
          "actualErrorCodes": [
            "FIXUSER1007"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_008_InvalidKin_FIXUSER1005_33",
          "caseName": "[NEGATIVE] invalid kin",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.227Z",
          "endedAt": "2026-06-23T11:15:16.245Z",
          "durationMs": 18,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "kin": "uncle"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"a9-SEaw9gKXUvrEe/Asd63IwqCnjVA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "14",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1005",
                "error": "Invalid kin,"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"kin\":\"uncle\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1005",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1005"
          ],
          "actualErrorCodes": [
            "FIXUSER1005"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_009_InvalidKinName_FIXUSER1006_34",
          "caseName": "[NEGATIVE] kin name invalid chars",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.245Z",
          "endedAt": "2026-06-23T11:15:16.337Z",
          "durationMs": 92,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "kin_first_name": "ROBERT123"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "174",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"ae-BO7jW1XRX9OMR2GgMX1JClE4Ct4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "89",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1006",
                "error": "Invalid kin name,"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"kin_first_name\":\"ROBERT123\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1006",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1006"
          ],
          "actualErrorCodes": [
            "FIXUSER1006"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_010_InvalidMotherName_Empty_FIXUSER1264_35",
          "caseName": "[NEGATIVE] mother_name whitespace",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.337Z",
          "endedAt": "2026-06-23T11:15:16.431Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "mother_name": "   "
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"c4-DFfsagkfP26qOQJeFRxFCh+YjvU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "12",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1264",
                "error": "mother name cant be just an empty space"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"mother_name\":\"   \"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1264",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1264"
          ],
          "actualErrorCodes": [
            "FIXUSER1264"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_011_InvalidFatherName_NonAlpha_FIXUSER1252_36",
          "caseName": "[NEGATIVE] father_name invalid chars",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.431Z",
          "endedAt": "2026-06-23T11:15:16.439Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "father_name": "WAKHARE123"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "216",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"d8-jO+APGhla5EIbTp8nA9bSIAoYgQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "5",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1252",
                "error": "Invalid father_name,father_name should be alphabetic string"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"father_name\":\"WAKHARE123\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1252",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1252"
          ],
          "actualErrorCodes": [
            "FIXUSER1252"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_012_InvalidEducation_INVALID_EDUCATION_37",
          "caseName": "[NEGATIVE] education invalid",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.439Z",
          "endedAt": "2026-06-23T11:15:16.458Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "education": "PhD"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "236",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"ec-Obpa3d5sSa2AQeb/hY7x/pk1nd4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "15",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": " ",
                "errorCode": "FIXUSER1216",
                "error": "Invalid education, possible values are Under Graduate, Graduate, Post Graduate"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"education\":\"PhD\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1216"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_013_InvalidSource_INVALID_SOURCE_OF_INCOME_38",
          "caseName": "[NEGATIVE] source invalid",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.458Z",
          "endedAt": "2026-06-23T11:15:16.531Z",
          "durationMs": 73,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "source_of_income": "Crypto"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "253",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"fd-XGcJ4EjrKoiXsHBqhidiNxXTpVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXUSER1217",
                "error": "IInvalid source_of_income , possible values are Salary, Business, Investment, Dependent, Other"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"source_of_income\":\"Crypto\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1217"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_014_UnknownField_ForbiddenNonWhitelisted_39",
          "caseName": "[NEGATIVE] unknown field rejected (only `/user`)",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.531Z",
          "endedAt": "2026-06-23T11:15:16.548Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "unknown_field": 1
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "14",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"unknown_field\":1}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_015_InvalidBoolean_IsAadhaarVerified_String_40",
          "caseName": "[NEGATIVE] boolean sent as string",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.548Z",
          "endedAt": "2026-06-23T11:15:16.565Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "is_aadhaar_verified": "true"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"is_aadhaar_verified\":\"true\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_016_InvalidBoolean_IsBankPresent_Number_41",
          "caseName": "[NEGATIVE] boolean sent as number",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.565Z",
          "endedAt": "2026-06-23T11:15:16.580Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "is_bank_present": 1
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"is_bank_present\":1}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_017_InvalidDate_UserPanVerificationDate_42",
          "caseName": "[NEGATIVE] invalid date string",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:16.580Z",
          "endedAt": "2026-06-23T11:15:16.646Z",
          "durationMs": 66,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "user_pan_verification_date": "not-a-date"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7650",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"1de2-Mta+BegNnq0647tiB2jl4UblKOo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "62",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:16.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:16.587Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"user_pan_verification_date\":\"not-a-date\"}'",
          "validations": [
            {
              "description": "HTTP status should be 201",
              "passed": true,
              "message": "Got 200"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_018_InvalidDate_UserAadhaarVerificationDate_FIXUSER1004_43",
          "caseName": "[NEGATIVE] invalid date string",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:16.646Z",
          "endedAt": "2026-06-23T11:15:16.668Z",
          "durationMs": 22,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "user_aadhaar_verification_date": "not-a-date"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "198",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"c6-XTIdyd90X4stMIFkP0R2rKpvhwA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "18",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1004",
                "error": "Please enter a valid DOB (Ex. YYYY-MM-DD)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"user_aadhaar_verification_date\":\"not-a-date\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1004",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1004"
          ],
          "actualErrorCodes": [
            "FIXUSER1004"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_RULE_001_EmailGate_403_WhenRequired_44",
          "caseName": "[POSITIVE] If `email_verification_required=true` and user `is_email_verified=false`, block personal-details submit",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 403,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:16.668Z",
          "endedAt": "2026-06-23T11:15:16.758Z",
          "durationMs": 90,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "occupation": "Public Sector",
            "marital_status": "Unmarried"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7670",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"1df6-nJbtmJ+8HQy4jYiGvfTSFDTNI/s\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "87",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:16.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADIAKADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDpKRhxS4obgVkSRjig9aUCgjvRcBppKKKQBS0mDRQA9eTTjwKRRilb1pgRGilNFIBKKcRxTaACiiimAlFJmjrikBNGflp2OOaZH05pzEAZBpCH4pD79KdSEZFWMZ04oPSjGOe1DdqQDCKTFPppOePSkMSjp1rF8ReJLbQYFBAmun+5CGwcf3j6D+Z/EjzvVPGGr38h23LQIekcPygfj1Pbr6dqaQHsG9QuSQB3J4FNE8My5ikRx/sHP8q8BmmmmlaWWRmkPBdiST+NREt6iqsFj6FCk+31oA56V8+28strKJreZoZR0eNirD8RXQaZ431rTSqvcfaogfu3GXPv82c5+uR7UrBZnsZGKjrmNI8faXqJWK7zZTnp5jZjPPZ+3bqB+NdQTnkUthCUhpaSgAxRiloHWkA9EDdTTjGKap9OtSjnkmkAtNJp1NIqhjSeOlHOOlFKfu0AMPFZkuuafDLND5skkkX3xFBJIE6/eZVIXoep7H0NGta1Bo1i9xJhnAykeeXPA/AcjJ968nl8VX8NmLa0lNspyZGjOHdj1Yt1z0GRzgDJOKErgRa9fi51e6lEnmbpCQ2chhng57jGMe2B0ArKMxA479TUtrbyX87MxJPUk81qDRQCMHj0puSRcYN7GJ53HTimmQ+lbbaSqnmmf2anoaXtEV7NmJvJ68Ck3gHvWs+ngDoKqyWgAoVRC5GiskvvXXeF/Gc+jyJa3jNNp7cerQ/7vt7fl6HjpIyhyKVHzx0FVuQ13PoSGaO4hSaGRZInAZHU5DA9CKk/GvN/hzrTJcyaTNIAjgvCG7MOoH1GT+Br0gmpJCnKOaZxT060DJApx3pM46gZ9xTxz3pr8mkIlpp6U8000xkZHNRXNzFaWs1zMSI4kLsR6CpWNZXiCNJdCulfJAUPgd9pDAfQ4wfahAeUa9rM+q3kk8xwucKinIAHQe/6euMkk883zMcVbum2pt/CqkYywxVoZ0miwBLcNjk1sDAGaraaoNug6cVak2KcMyg+ma527s6YqyIJgDzVc9OBV1gjrkMD+NQbFNIspSLx061VkXAxitFwuDnoKpzPGD96hEtGbNBuB4rNkjMTc1tmWHpmobyBJLYuhBx6VpFtbmUkmU7eZ4LiK4idkkRgykHBBHQivdLC7+26fbXRwDNErnHQZGa8FiYqcGva9DvRcaHYyZyTAgbjHIGD+tWzFmvvp6NVbzVp6SLmp0As7/Sk3UzeCcCngigC4elMI4p5HNMI5qrARNWV4gLf2FflCQwt3II7fKa1n4qrMA6spHBGMUwPBrobxwMEdRVaPgj3Namr2M1hqUsLowCsQrEfeHY1UtYDLewpjrIo/WmUdLDHKY0ijbYuOWHWoLq2tI1I8x2cDLYOePWtqS0Y25Efyn1rGk0hmglExViSNm5jge+Mck/UVzRep0taGV5yIwWKeTH1rXsPMlTO/cMVQh051V0K5DHqVxj6VtWNg8cOOgx6cmqm0EE2ZF7Iy7gGxWVv3HLB2ravoAZCKpLb4Rk6buvvRCSFUi7leOWLH+rIA74q9FDHKDs6MMECo47ZlhMQz5bHJHrViCExHgYFEmuhMU+pz7IYpmRuqnBr1bwqnk+HLRSTyC2M+pJrz6+tgL4uADuTdj36V3Phe9N5oyqQA0LeWQPTt/n2qnK6MpRa1OiDU5SfWoFJqZDUklhXIHWpBMarg07NAG6SBTGNKfrTX6VsIhc5qBxUrdaY4yKBnO+KtOhvNGuHaJWlUAq+ORg/4Z/OuDtrFLfULI5+8STn2FepXkAubSWEnG9SufTNebyRuup2+QfkJR/VTyKiTNqaTizcCeYAufwqOeN1Urt9vpRE+2TNWJJQUyc1z7M6UZ6qkQ3yfWp4i8pVguAemTgVTuA0zbF6Go5ftbTJum8qGMdFwdx9809x7EepwjeTuX86zAu19rd+h9adeF5QxaT5c/w8VDArnbubIHQmhRsRJpvQtKuDjtSs+3gUBucU12GaT3F0ILwgvEcdQRXVeD7cwabJKwx5z5X6Dj+ea5S5XeYwM969BtIfs9rFCvRFC/pWiMJvSxc6VIh7VCuT3qVQfWmZE4paaM4p2DQBuHrTXHAFTMKiNbCICMnpTWGFqYiomFAyuy1yGv6cY7trlMJHJgs3bOeldk9QkdaTVyoy5Xc4EsyhWHQjrT/OJTJ5FW9VgMOoyofut84+h/8Ar5rNyqNjP4VzyVmdcHdE6hUXe3X0rOuLsGUpFG1xIOSF6LUt1mYbFOAetQESW8Xl24Cj6Zpxtuxtu5UnE7HCWpUdxgD+tVPNMbbWyh9+hqw4vSSWcfTFVmyxw+D68VWhnLyJg+7kGng7jUEY28dqmjBMgwMk8VNhX0N3RdNinb7RKCwQ4Ve2a6cHIqtY2ZtLGKNvv4y31PWrIFOxg3dj1PNToarr1qwlBJKDT6jFPBpgdE/BAqFhzUz9aYRk81uBERUTjNWCvFREUAV3GRUOKskVUvbiKytJbqYkRxjLYGTSuBi+JLbfZrcKPmibB+h/+viuReX1rVuPGMOpiSxjs2RJD8srSc4Bz93Ht61iXHyMazlZu5vTbRJG6k4JqZ5oo0yBk1lmTHsaY07EYOfwqLGnOTzTkk+pqizgsc4pJJNw75qsWwT1Jp2Jci0XArovCemG8uzdyr+6hPy57t/9b/CuTUkn3re0XxHLpFwlttVraRsuCOQfXNNIzk20egyJxVYpg1dR0niWRDlWGRUbpQ1fUyIAuBUq5xSdOKerCkA8UoHtQDS5pgdIwpmKmIphFbgRkVC4qdiqKWYhVHcnAqm97bMSI5VkYdkOfbH6ipbS3ATBLAAZJ4rM12E3FpJaj7silR9a1Lm+stLgWe8uYoASQpkYDJAzgep+lYFz4j0W9g2Q3uZ9pZCIX454524rCpO+xpFWPL7RgLraYwjoTnnnIrVdwwwwyKueKdL+yXC30KbcYWVB2I4/+tWYHEkYYHrVJpq6KRXmjK8o1U2kkXquavPnnmq0iE9KY7FR5yf4TTMsxyeKldGB5phUijQVmOUhadbRNdalEACQOv0qLB711vhTRJJLVr11wHJ2Z7qOM/nmlJ2VxM6fSpjFbxKxO3bg1q/I4yCK5d9b0uyme2lnKNE20/u2Iz35Aq9DqMF1CZbK5WQKcMB2/CsITcdGtCWrmu0Q7GmeXg85rOivZwBvwwP8Q4qwl6C21sg1pzxYrMuBR2zSgfWmLIp7ipAatNEnQ3F0kC5PzH0FUZ7+Ty96kIM49ahjYTkhjw3Sq18pSxZO4bNZyqyZpyoS9vXmtVRjks/Ix2qDBtL0wxqoBIK5HHXNRRN5sYz1XFX9Qh3wx3CfeGM1m23qxmZcaINQ8RrNqFzLcRoP3cT4CL7ADj/Izmrt3oUUdmhs7dN9u5cRgY3q33lz79R7gelWgRMkNyo+YH5sVoxPlgexFMDAvFhu7ZGZFMLL98jGPZh2/wD1/jxup+Gp7IyS2GbiAEsY1BLIM/qP8+pr0O4tvstw00S5jc5kj9T6j3pqQRhBJbglP7g/h+n+FEW1sB5ECH7fhQIyDXpGq+G7HV0aZNsNyefNQfeP+0O/16/yrir3TrnTbn7PdptY8qw+6w9Qa0U7mkbMypEzyarSQk9BWq8Q7Vf03SEnAubnK2+flUcNKfRfbjr/APXwcxTjbcxLLRrq/JESqsYOHlkO1E+p/p1rsZr9giQ6WHitIVEce4DMmBgfhU5tnuykQQQ2sY4iXoP8f8k+92O0REDBQAOBWU5t6IybMAaLHKCJPmfadzHqSTkmpYdFjttssLFH27Wx3rbWLcCcdaV4trBPwrO7EVQuCPRuooMeZ0I7GrU0HluimpYLbcxYnAFAisAewqVXZOmaWE/M49DmpkRXkPHFCuthli2k+Veehq/exCazLAdRWVbZMZb3rYs2EsRjb0qxnOwny59p6VvW4E1psbnisS+j8q8YVqabKSoBpREQwE28zwt909KvhsAY+tR3lvu+dRyDUMEmSVbqKpAaU/zRBvWs/DQv5kf3T1FXYTvtmU9RVSJsOUNAEhjWbMsTBZOpB6N9f8apX9rBqFo9veRnaP4v4oz6j/OKt7CjZFPdtybmXkd6AOCTQZLa+ZLsiSBOY9hx5/p7qPX8h6jbjhQHLuu4DHyDhR2VR2HT/OKrmG5k1+dvKIgGVHzZXGBjA7H19SSa1IIFX5sd6TdxybY1FyAFXag6CiQFiFFTmkAAOaQhuwRqi9ycmmqu+6H1qTaWcGnKmyUE9cUWERXwywNTwjFuCe4qCcbyMVaJCwqpGDijqMyouLtlPcmrMJwz59KqMdmofU5qdzsLGpAn0r5ppYuoIyKuwM0cp55U1n6E+bjH+zitA/8AHwwHU1YFTWUH20sBw3NP07ipdVjJ8o/7A/lUNodgBPc4oW4M2Uw/ynvWdcw+VMxHrV9W2utJdxh8kVQFexlDFlNQz/u7g/WokbybjPqas3ozhx3FICRGBFLIhaJwOOM1XifKKfUVbiIfg0wMuCIGd8d0VvzAqaNS3mccg5+uec/nn8qS3UJOoJyxDKfqCcfoBT4vkvcZ4dSMfQ//AFzSEQSKVNIvTkVbukwpNVI/u56ipGOX/WAetSyqAQagkBG1x64pzvnBNMBjJhqdcMQAOMVKAHAqrc7ufakBm3RIuI3HODVy5GF/DNVJfmwPerN04Cx5PVcGp6AR6LMIdQ2t34Fbe3GoEMeGGaKKtbICS+TfbxkehrOJKxAejZoopvcGacTho0b25q5gOh6UUUxIx7pMOfrUzHzLMHuKKKQyGE/uselWbd8OPrRRQBDIghvJDnnzdxGegIAH8jTpMiaF14G4Z/UfzIoooETXKkpj2rOQ7SR2oopMZJsMiEBsYIPSkmUqMEflRRQxEEcxjIyeAakkYSZ560UUkBmTLtJIqG5mLwK3ocUUVKH1P//Z",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "omvakhare150@gmail.com",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:16.733Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"occupation\":\"Public Sector\",\"marital_status\":\"Unmarried\"}'",
          "validations": [
            {
              "description": "Fixture-dependent PUT /user rule should return documented error or live controlled success",
              "passed": true,
              "message": "Live UAT config accepted the update; documented error fixture is not active"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_RULE_002_DuplicateEmail_FIXUSER1037_45",
          "caseName": "[POSITIVE] Duplicate email mapping",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:16.758Z",
          "endedAt": "2026-06-23T11:15:16.928Z",
          "durationMs": 170,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "duplicate@fixerra.in"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7668",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:16 GMT",
            "etag": "W/\"1df4-jzpueoqKafRnnDLFQPbWLxcPdwo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "165",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:16.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "duplicate@fixerra.in",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:16.828Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"duplicate@fixerra.in\"}'",
          "validations": [
            {
              "description": "Fixture-dependent PUT /user rule should return documented error or live controlled success",
              "passed": true,
              "message": "Live UAT config accepted the update; documented error fixture is not active"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1037"
          ],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_RULE_003_UpdateFailed_FIXUSER1048_46",
          "caseName": "[POSITIVE] Generic failure mapping",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:16.928Z",
          "endedAt": "2026-06-23T11:15:17.162Z",
          "durationMs": 234,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "email": "om@gmail.com"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "7660",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "etag": "W/\"1dec-4c3YDZHQgFJpfqHkP12mPu/la1Y\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "231",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:15:16.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "om@gmail.com",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:15:16.943Z",
              "mother_name": "Jane Doe",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2025-03-12T14:12:15.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"om@gmail.com\"}'",
          "validations": [
            {
              "description": "Fixture-dependent PUT /user rule should return documented error or live controlled success",
              "passed": true,
              "message": "Live UAT config accepted the update; documented error fixture is not active"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1048"
          ],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_RULE_004_Unauthorized_NoJWT_47",
          "caseName": "[POSITIVE] Missing JWT",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:17.162Z",
          "endedAt": "2026-06-23T11:15:17.170Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "email": "om@gmail.com"
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "etag": "W/\"a9-ra1+G8sgf4WPH3Nd3PzEHUQT2fc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "5",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"email\":\"om@gmail.com\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_GET_USER_TC_PI_USER_001_Load_Success_0",
          "caseName": "[POSITIVE] Personal info prefill works",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:17.170Z",
          "endedAt": "2026-06-23T11:15:17.248Z",
          "durationMs": 78,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1674",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "etag": "W/\"68a-foxNg/JMMiYi7osy1ft6b4XCNig\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "73",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "createdAt": "2026-06-23T11:14:11.000Z",
              "isActive": true,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "profile_photo": null,
              "profile_photo_file_name": null,
              "pan": "249a22814bf213a7ff2e68cfa58da9d3:531b8deb153f11eb940d64dc06c748cd",
              "email": "dilip@fixerra.inn",
              "password": "",
              "sub_account": "",
              "gender": "",
              "salutation": "",
              "first_name": "OM",
              "middle_name": "CHANDRASHEKHAR",
              "last_name": "WAKHARE",
              "pan_first_name": "OM",
              "pan_middle_name": "CHANDRASHEKHAR",
              "pan_last_name": "WAKHARE",
              "phone": "918668336629",
              "code": "91",
              "dob": null,
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:14:11.583Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "",
              "annual_income": "",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": false,
              "is_email_verified": true,
              "is_aadhaar_verified": false,
              "is_nominee_present": false,
              "is_ckyc_verified": false,
              "is_bank_present": true,
              "kin": "father",
              "kin_first_name": "WAKHARE",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "CHANDRASHEKHAR",
              "marital_status": "",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:14:34.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": "2026-06-23T11:15:09.000Z",
              "user_email_verification_date": "2026-06-23T11:15:14.000Z",
              "profile_updated_at": null,
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:44:11.000Z",
              "decrypted_pan": "AJFPW6688L",
              "is_personal_details": {
                "BAJ": false,
                "MAH": false,
                "SHRI": false
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_GET_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "GET",
            "guards": "| Auth | Bearer JWT (partner headers may be present but are not strictly enforced when JWT exists) |",
            "authHint": "| Auth | Bearer JWT (partner headers may be present but are not strictly enforced when JWT exists) |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_GET_USER_TC_PI_USER_002_EmailGate_False_1",
          "caseName": "[POSITIVE] After OTP, verify `is_email_verified=false` blocks submit",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:17.248Z",
          "endedAt": "2026-06-23T11:15:17.341Z",
          "durationMs": 93,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1674",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "etag": "W/\"68a-foxNg/JMMiYi7osy1ft6b4XCNig\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "89",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "createdAt": "2026-06-23T11:14:11.000Z",
              "isActive": true,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "profile_photo": null,
              "profile_photo_file_name": null,
              "pan": "249a22814bf213a7ff2e68cfa58da9d3:531b8deb153f11eb940d64dc06c748cd",
              "email": "dilip@fixerra.inn",
              "password": "",
              "sub_account": "",
              "gender": "",
              "salutation": "",
              "first_name": "OM",
              "middle_name": "CHANDRASHEKHAR",
              "last_name": "WAKHARE",
              "pan_first_name": "OM",
              "pan_middle_name": "CHANDRASHEKHAR",
              "pan_last_name": "WAKHARE",
              "phone": "918668336629",
              "code": "91",
              "dob": null,
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:14:11.583Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "",
              "annual_income": "",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": false,
              "is_email_verified": true,
              "is_aadhaar_verified": false,
              "is_nominee_present": false,
              "is_ckyc_verified": false,
              "is_bank_present": true,
              "kin": "father",
              "kin_first_name": "WAKHARE",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "CHANDRASHEKHAR",
              "marital_status": "",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:14:34.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": "2026-06-23T11:15:09.000Z",
              "user_email_verification_date": "2026-06-23T11:15:14.000Z",
              "profile_updated_at": null,
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:44:11.000Z",
              "decrypted_pan": "AJFPW6688L",
              "is_personal_details": {
                "BAJ": false,
                "MAH": false,
                "SHRI": false
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_GET_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "GET",
            "guards": "| Auth | Bearer JWT (partner headers may be present but are not strictly enforced when JWT exists) |",
            "authHint": "| Auth | Bearer JWT (partner headers may be present but are not strictly enforced when JWT exists) |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_GET_USER_TC_PI_USER_003_IssuerOverlay_SSFB_2",
          "caseName": "[POSITIVE] SSFB overlay present if available",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:17.341Z",
          "endedAt": "2026-06-23T11:15:17.459Z",
          "durationMs": 118,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "issuer_code": "SSFB"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1674",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "etag": "W/\"68a-foxNg/JMMiYi7osy1ft6b4XCNig\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "115",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "createdAt": "2026-06-23T11:14:11.000Z",
              "isActive": true,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "profile_photo": null,
              "profile_photo_file_name": null,
              "pan": "249a22814bf213a7ff2e68cfa58da9d3:531b8deb153f11eb940d64dc06c748cd",
              "email": "dilip@fixerra.inn",
              "password": "",
              "sub_account": "",
              "gender": "",
              "salutation": "",
              "first_name": "OM",
              "middle_name": "CHANDRASHEKHAR",
              "last_name": "WAKHARE",
              "pan_first_name": "OM",
              "pan_middle_name": "CHANDRASHEKHAR",
              "pan_last_name": "WAKHARE",
              "phone": "918668336629",
              "code": "91",
              "dob": null,
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:14:11.583Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "",
              "annual_income": "",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": false,
              "is_email_verified": true,
              "is_aadhaar_verified": false,
              "is_nominee_present": false,
              "is_ckyc_verified": false,
              "is_bank_present": true,
              "kin": "father",
              "kin_first_name": "WAKHARE",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "CHANDRASHEKHAR",
              "marital_status": "",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:14:34.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": "2026-06-23T11:15:09.000Z",
              "user_email_verification_date": "2026-06-23T11:15:14.000Z",
              "profile_updated_at": null,
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:44:11.000Z",
              "decrypted_pan": "AJFPW6688L",
              "is_personal_details": {
                "BAJ": false,
                "MAH": false,
                "SHRI": false
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "docsFile": "user-services/API_QA_PI_GET_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "GET",
            "guards": "| Auth | Bearer JWT (partner headers may be present but are not strictly enforced when JWT exists) |",
            "authHint": "| Auth | Bearer JWT (partner headers may be present but are not strictly enforced when JWT exists) |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_GET_USER_TC_PI_USER_004_Unauth_NoJWT_3",
          "caseName": "[POSITIVE] Missing JWT rejected",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:17.459Z",
          "endedAt": "2026-06-23T11:15:17.466Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "etag": "W/\"a9-ra1+G8sgf4WPH3Nd3PzEHUQT2fc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_GET_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "GET",
            "guards": "| Auth | Bearer JWT (partner headers may be present but are not strictly enforced when JWT exists) |",
            "authHint": "| Auth | Bearer JWT (partner headers may be present but are not strictly enforced when JWT exists) |"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        }
      ],
      "summary": {
        "total": 139,
        "passed": 139,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 8028
      }
    },
    {
      "stepId": "step-06-personal-details",
      "stepName": "Personal Details",
      "cases": [
        {
          "caseId": "SHRI_PI_001",
          "caseName": "Get dropdown options for personal info form (Shriram Finance)",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user/dropdown",
          "status": "passed",
          "scenarioType": "static",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:17.466Z",
          "endedAt": "2026-06-23T11:15:17.471Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "526",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "etag": "W/\"20e-YqUCbnMbboHrP/2SAuX85Qu+uWc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "occupations": {
                "Business": [
                  "Business"
                ],
                "Others": [
                  "Professional",
                  "Self Employed",
                  "Retired",
                  "Housewife",
                  "Student",
                  "Not Categorized",
                  "Agriculture",
                  "Others"
                ],
                "Service": [
                  "Public Sector",
                  "Private Sector",
                  "Government Sector",
                  "Salaried"
                ]
              },
              "annualIncomes": [
                "Upto 5L Per Annum",
                "5L - 10L Per Annum",
                "10 - 15L Per Annum",
                "10L - 15L Per Annum",
                "15L - 25L Per Annum",
                "25L - 50L Per Annum",
                "50L - 1Cr Per Annum",
                "1Cr and Above"
              ],
              "maritalStatus": [
                "Married",
                "Unmarried",
                "Others"
              ]
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user/dropdown' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK, body.statusCode=200"
            },
            {
              "description": "Response should contain dropdown options",
              "passed": true,
              "message": "Dropdown options present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_GET_DROPDOWN.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_002",
          "caseName": "Save personal details for Shriram Finance user",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:17.471Z",
          "endedAt": "2026-06-23T11:15:17.547Z",
          "durationMs": 76,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "73",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Body statusCode should be 201",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_003",
          "caseName": "Verify personal-details response content type",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:17.547Z",
          "endedAt": "2026-06-23T11:15:17.578Z",
          "durationMs": 31,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "personal.contenttype@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "27",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"personal.contenttype@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response content type should be application/json",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_004",
          "caseName": "Verify personal-details response time",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:17.578Z",
          "endedAt": "2026-06-23T11:15:17.640Z",
          "durationMs": 62,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "personal.responsetime@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "59",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"personal.responsetime@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Response should complete within 2000ms",
              "passed": true,
              "message": "duration=62ms"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_005",
          "caseName": "Verify all query parameters accepted",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:17.640Z",
          "endedAt": "2026-06-23T11:15:17.670Z",
          "durationMs": 30,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "personal.query@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC",
            "bank_code": "true",
            "credit_card": "false",
            "bank_change_request": "false",
            "account_holder_name": "JOHN DOE"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "26",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC&bank_code=true&credit_card=false&bank_change_request=false&account_holder_name=JOHN+DOE' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"personal.query@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_016",
          "caseName": "Verify valid email update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:17.670Z",
          "endedAt": "2026-06-23T11:15:17.734Z",
          "durationMs": 64,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "valid.email@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "60",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"valid.email@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_019",
          "caseName": "Verify invalid email format",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:17.734Z",
          "endedAt": "2026-06-23T11:15:17.760Z",
          "durationMs": 26,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "emailwithoutat",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "23",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"emailwithoutat\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_PI_020",
          "caseName": "Verify email missing domain",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:17.760Z",
          "endedAt": "2026-06-23T11:15:17.838Z",
          "durationMs": 78,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "test@",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "73",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"test@\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_PI_021",
          "caseName": "Verify email missing username",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:17.838Z",
          "endedAt": "2026-06-23T11:15:17.849Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "@gmail.com",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"@gmail.com\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_PI_022",
          "caseName": "Verify email with multiple @",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:17.849Z",
          "endedAt": "2026-06-23T11:15:17.863Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "test@@mail.com",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "191",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"test@@mail.com\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1002",
              "passed": true,
              "message": "FIXUSER1002 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "SHRI_PI_023",
          "caseName": "Verify null email",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:17.863Z",
          "endedAt": "2026-06-23T11:15:17.947Z",
          "durationMs": 84,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": null,
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "81",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":null,\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Body statusCode should be 201",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_024",
          "caseName": "Verify empty email",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:17.947Z",
          "endedAt": "2026-06-23T11:15:17.986Z",
          "durationMs": 39,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:17 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "24",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Body statusCode should be 201",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_025",
          "caseName": "Verify valid PAN update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:17.986Z",
          "endedAt": "2026-06-23T11:15:18.034Z",
          "durationMs": 48,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "pan": "ABCPE1234F"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "44",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"pan\":\"ABCPE1234F\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_026",
          "caseName": "Verify PAN lowercase validation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.034Z",
          "endedAt": "2026-06-23T11:15:18.050Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "pan": "abcde1234f"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "12",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"pan\":\"abcde1234f\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PI_027",
          "caseName": "Verify PAN with special characters",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.050Z",
          "endedAt": "2026-06-23T11:15:18.133Z",
          "durationMs": 83,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "pan": "ABC@E1234F"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "79",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"pan\":\"ABC@E1234F\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PI_028",
          "caseName": "Verify PAN length less than 10",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.134Z",
          "endedAt": "2026-06-23T11:15:18.146Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "pan": "ABC123"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"pan\":\"ABC123\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PI_029",
          "caseName": "Verify PAN length greater than 10",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.146Z",
          "endedAt": "2026-06-23T11:15:18.231Z",
          "durationMs": 85,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "pan": "ABCDE1234FF"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"pan\":\"ABCDE1234FF\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_PI_030",
          "caseName": "Verify null PAN",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.231Z",
          "endedAt": "2026-06-23T11:15:18.251Z",
          "durationMs": 20,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "pan": null
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "16",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"pan\":null}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_031",
          "caseName": "Verify empty PAN",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.251Z",
          "endedAt": "2026-06-23T11:15:18.331Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "pan": ""
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "20",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"pan\":\"\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_032",
          "caseName": "Verify valid DOB update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.331Z",
          "endedAt": "2026-06-23T11:15:18.431Z",
          "durationMs": 100,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "dob": "1995-08-30"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"dob\":\"1995-08-30\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_033",
          "caseName": "Verify future DOB validation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.431Z",
          "endedAt": "2026-06-23T11:15:18.443Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "dob": "2099-01-01"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "194",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"c2-ue3VX43dASmbpm+YepGpr2KuIH4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1094",
                "error": "Date of birth cannot be in the future"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"dob\":\"2099-01-01\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1094",
              "passed": true,
              "message": "FIXUSER1094 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1094"
          ],
          "actualErrorCodes": [
            "FIXUSER1094"
          ]
        },
        {
          "caseId": "SHRI_PI_034",
          "caseName": "Verify underage DOB validation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.443Z",
          "endedAt": "2026-06-23T11:15:18.456Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "dob": "2012-01-01"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "251",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"fb-cPC0LS13kONH8e+s+M6F4epE/5Q\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1095",
                "error": "We appreciate your interest, FD can only be applied for individuals who are 18 years and above"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"dob\":\"2012-01-01\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1095",
              "passed": true,
              "message": "FIXUSER1095 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1095"
          ],
          "actualErrorCodes": [
            "FIXUSER1095"
          ]
        },
        {
          "caseId": "SHRI_PI_035",
          "caseName": "Verify invalid DOB format",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.456Z",
          "endedAt": "2026-06-23T11:15:18.468Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "dob": "not-a-date"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "198",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"c6-XTIdyd90X4stMIFkP0R2rKpvhwA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1004",
                "error": "Please enter a valid DOB (Ex. YYYY-MM-DD)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"dob\":\"not-a-date\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1004",
              "passed": true,
              "message": "FIXUSER1004 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1004"
          ],
          "actualErrorCodes": [
            "FIXUSER1004"
          ]
        },
        {
          "caseId": "SHRI_PI_036",
          "caseName": "Verify null DOB",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.469Z",
          "endedAt": "2026-06-23T11:15:18.530Z",
          "durationMs": 61,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "dob": null
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "57",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"dob\":null}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_037",
          "caseName": "Verify empty DOB",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.530Z",
          "endedAt": "2026-06-23T11:15:18.631Z",
          "durationMs": 101,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "dob": ""
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "198",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"c6-XTIdyd90X4stMIFkP0R2rKpvhwA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1004",
                "error": "Please enter a valid DOB (Ex. YYYY-MM-DD)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"dob\":\"\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1004"
          ]
        },
        {
          "caseId": "SHRI_PI_038",
          "caseName": "Verify age exactly 18 years",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.631Z",
          "endedAt": "2026-06-23T11:15:18.731Z",
          "durationMs": 100,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "dob": "2006-01-01"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"dob\":\"2006-01-01\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_039",
          "caseName": "Verify valid occupation update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:18.731Z",
          "endedAt": "2026-06-23T11:15:18.764Z",
          "durationMs": 33,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "30",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_040",
          "caseName": "Verify invalid occupation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.764Z",
          "endedAt": "2026-06-23T11:15:18.831Z",
          "durationMs": 67,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "Astronaut",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "347",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"15b-XKNh0tvxkzqFmM3b3KRtlnMv4Z4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "12",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1079",
                "error": "Invalid Occupation Code. valid values are: Business,Professional,Self Employed,Retired,Housewife,Student,Not Categorized,Agriculture,Public Sector,Private Sector,Government Sector,Salaried\n"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"Astronaut\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1079",
              "passed": true,
              "message": "FIXUSER1079 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1079"
          ],
          "actualErrorCodes": [
            "FIXUSER1079"
          ]
        },
        {
          "caseId": "SHRI_PI_041",
          "caseName": "Verify null occupation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:18.831Z",
          "endedAt": "2026-06-23T11:15:18.860Z",
          "durationMs": 29,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": null,
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "25",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":null,\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Body statusCode should be 201",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_042",
          "caseName": "Verify empty occupation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.860Z",
          "endedAt": "2026-06-23T11:15:18.882Z",
          "durationMs": 22,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "347",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"15b-XKNh0tvxkzqFmM3b3KRtlnMv4Z4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "18",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1079",
                "error": "Invalid Occupation Code. valid values are: Business,Professional,Self Employed,Retired,Housewife,Student,Not Categorized,Agriculture,Public Sector,Private Sector,Government Sector,Salaried\n"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1079",
              "passed": true,
              "message": "FIXUSER1079 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1079"
          ],
          "actualErrorCodes": [
            "FIXUSER1079"
          ]
        },
        {
          "caseId": "SHRI_PI_043",
          "caseName": "Verify valid annual income update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:18.882Z",
          "endedAt": "2026-06-23T11:15:18.951Z",
          "durationMs": 69,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "66",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_044",
          "caseName": "Verify invalid annual income",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.951Z",
          "endedAt": "2026-06-23T11:15:18.963Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "999L",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "184",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"b8-ZR98rvnT+yD4+xlWjy2txAP5Zkk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1053",
                "error": "Annual Income Invalid Value"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"999L\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1053",
              "passed": true,
              "message": "FIXUSER1053 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1053"
          ],
          "actualErrorCodes": [
            "FIXUSER1053"
          ]
        },
        {
          "caseId": "SHRI_PI_045",
          "caseName": "Verify empty annual income",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:18.963Z",
          "endedAt": "2026-06-23T11:15:18.976Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "184",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:18 GMT",
            "etag": "W/\"b8-ZR98rvnT+yD4+xlWjy2txAP5Zkk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1053",
                "error": "Annual Income Invalid Value"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1053",
              "passed": true,
              "message": "FIXUSER1053 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1053"
          ],
          "actualErrorCodes": [
            "FIXUSER1053"
          ]
        },
        {
          "caseId": "SHRI_PI_046",
          "caseName": "Verify valid marital status update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:18.976Z",
          "endedAt": "2026-06-23T11:15:19.053Z",
          "durationMs": 77,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Married",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "74",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Married\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_047",
          "caseName": "Verify invalid marital status",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.053Z",
          "endedAt": "2026-06-23T11:15:19.071Z",
          "durationMs": 18,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Single",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "219",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"db-/DRG/0/5hDwju6lTlit6aF7u/0A\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "14",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1007",
                "error": "Invalid marital status. Valid values: Married,Unmarried,Others"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Single\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1007",
              "passed": true,
              "message": "FIXUSER1007 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1007"
          ],
          "actualErrorCodes": [
            "FIXUSER1007"
          ]
        },
        {
          "caseId": "SHRI_PI_048",
          "caseName": "Verify null marital status",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:19.071Z",
          "endedAt": "2026-06-23T11:15:19.140Z",
          "durationMs": 69,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": null,
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "66",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":null,\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Body statusCode should be 201",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_049",
          "caseName": "Verify empty marital status",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.140Z",
          "endedAt": "2026-06-23T11:15:19.153Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "219",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"db-/DRG/0/5hDwju6lTlit6aF7u/0A\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1007",
                "error": "Invalid marital status. Valid values: Married,Unmarried,Others"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1007",
              "passed": true,
              "message": "FIXUSER1007 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1007"
          ],
          "actualErrorCodes": [
            "FIXUSER1007"
          ]
        },
        {
          "caseId": "SHRI_PI_050",
          "caseName": "Verify valid mother name update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:19.153Z",
          "endedAt": "2026-06-23T11:15:19.227Z",
          "durationMs": 74,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "71",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_051",
          "caseName": "Verify blank mother name",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.228Z",
          "endedAt": "2026-06-23T11:15:19.240Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": " ",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"c4-DFfsagkfP26qOQJeFRxFCh+YjvU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1264",
                "error": "mother name cant be just an empty space"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\" \",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1264",
              "passed": true,
              "message": "FIXUSER1264 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1264"
          ],
          "actualErrorCodes": [
            "FIXUSER1264"
          ]
        },
        {
          "caseId": "SHRI_PI_052",
          "caseName": "Verify null mother name",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:19.240Z",
          "endedAt": "2026-06-23T11:15:19.275Z",
          "durationMs": 35,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": null,
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "32",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":null,\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Body statusCode should be 201",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_053",
          "caseName": "Verify mother name with numeric characters",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.275Z",
          "endedAt": "2026-06-23T11:15:19.329Z",
          "durationMs": 54,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "MOTHER123",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"d2-qwLJDVJ/p1rrp9cJc0bh6UPHGaY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "51",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1265",
                "error": "Invalid mother name, please enter a valid mother name"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"MOTHER123\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1265",
              "passed": true,
              "message": "FIXUSER1265 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1265"
          ],
          "actualErrorCodes": [
            "FIXUSER1265"
          ]
        },
        {
          "caseId": "SHRI_PI_054",
          "caseName": "Verify mother name with special characters",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.330Z",
          "endedAt": "2026-06-23T11:15:19.344Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "MOTHER@NAME",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"d2-qwLJDVJ/p1rrp9cJc0bh6UPHGaY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1265",
                "error": "Invalid mother name, please enter a valid mother name"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"MOTHER@NAME\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1265",
              "passed": true,
              "message": "FIXUSER1265 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1265"
          ],
          "actualErrorCodes": [
            "FIXUSER1265"
          ]
        },
        {
          "caseId": "SHRI_PI_055",
          "caseName": "Verify valid father name update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:19.344Z",
          "endedAt": "2026-06-23T11:15:19.442Z",
          "durationMs": 98,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "95",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_056",
          "caseName": "Verify blank father name",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.443Z",
          "endedAt": "2026-06-23T11:15:19.457Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": " ",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "194",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"c2-ZErz2AsOfQaUHCObnprDfiHJEnI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1251",
                "error": "Please enter the father’s full name"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\" \",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1251",
              "passed": true,
              "message": "FIXUSER1251 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1251"
          ],
          "actualErrorCodes": [
            "FIXUSER1251"
          ]
        },
        {
          "caseId": "SHRI_PI_057",
          "caseName": "Verify null father name",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:19.457Z",
          "endedAt": "2026-06-23T11:15:19.485Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": null,
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "25",
            "server": "envoy",
            "connection": "close"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":null,\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Body statusCode should be 201",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_058",
          "caseName": "Verify father name with numeric characters",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.486Z",
          "endedAt": "2026-06-23T11:15:19.545Z",
          "durationMs": 59,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "FATHER123",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "216",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"d8-jO+APGhla5EIbTp8nA9bSIAoYgQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1252",
                "error": "Invalid father_name,father_name should be alphabetic string"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"FATHER123\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1252",
              "passed": true,
              "message": "FIXUSER1252 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1252"
          ],
          "actualErrorCodes": [
            "FIXUSER1252"
          ]
        },
        {
          "caseId": "SHRI_PI_059",
          "caseName": "Verify father name with special characters",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.545Z",
          "endedAt": "2026-06-23T11:15:19.555Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "FATHER@NAME",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "216",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"d8-jO+APGhla5EIbTp8nA9bSIAoYgQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1252",
                "error": "Invalid father_name,father_name should be alphabetic string"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"FATHER@NAME\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1252",
              "passed": true,
              "message": "FIXUSER1252 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1252"
          ],
          "actualErrorCodes": [
            "FIXUSER1252"
          ]
        },
        {
          "caseId": "SHRI_PI_060",
          "caseName": "Verify valid kin relation update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.555Z",
          "endedAt": "2026-06-23T11:15:19.566Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "kin": "father"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"kin\":\"father\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_061",
          "caseName": "Verify invalid kin relation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.566Z",
          "endedAt": "2026-06-23T11:15:19.631Z",
          "durationMs": 65,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "kin": "uncle"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"a9-SEaw9gKXUvrEe/Asd63IwqCnjVA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1005",
                "error": "Invalid kin,"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"kin\":\"uncle\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1005",
              "passed": true,
              "message": "FIXUSER1005 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1005"
          ],
          "actualErrorCodes": [
            "FIXUSER1005"
          ]
        },
        {
          "caseId": "SHRI_PI_062",
          "caseName": "Verify null kin relation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.631Z",
          "endedAt": "2026-06-23T11:15:19.650Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "kin": null
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "16",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"kin\":null}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_063",
          "caseName": "Verify empty kin relation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.650Z",
          "endedAt": "2026-06-23T11:15:19.661Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "kin": ""
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"a9-SEaw9gKXUvrEe/Asd63IwqCnjVA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1005",
                "error": "Invalid kin,"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"kin\":\"\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1005"
          ]
        },
        {
          "caseId": "SHRI_PI_064",
          "caseName": "Verify invalid kin first name",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.661Z",
          "endedAt": "2026-06-23T11:15:19.673Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "kin_first_name": "ROBERT123"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "174",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"ae-BO7jW1XRX9OMR2GgMX1JClE4Ct4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1006",
                "error": "Invalid kin name,"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"kin_first_name\":\"ROBERT123\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1006",
              "passed": true,
              "message": "FIXUSER1006 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1006"
          ],
          "actualErrorCodes": [
            "FIXUSER1006"
          ]
        },
        {
          "caseId": "SHRI_PI_065",
          "caseName": "Verify invalid kin last name",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.673Z",
          "endedAt": "2026-06-23T11:15:19.731Z",
          "durationMs": 58,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "kin_last_name": "DOE123"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "174",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"ae-BO7jW1XRX9OMR2GgMX1JClE4Ct4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "53",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1006",
                "error": "Invalid kin name,"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"kin_last_name\":\"DOE123\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1006",
              "passed": true,
              "message": "FIXUSER1006 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1006"
          ],
          "actualErrorCodes": [
            "FIXUSER1006"
          ]
        },
        {
          "caseId": "SHRI_PI_066",
          "caseName": "Verify kin first name with special characters",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.731Z",
          "endedAt": "2026-06-23T11:15:19.741Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "kin_first_name": "ROBERT@DOE"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "174",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"ae-BO7jW1XRX9OMR2GgMX1JClE4Ct4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1006",
                "error": "Invalid kin name,"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"kin_first_name\":\"ROBERT@DOE\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1006",
              "passed": true,
              "message": "FIXUSER1006 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1006"
          ],
          "actualErrorCodes": [
            "FIXUSER1006"
          ]
        },
        {
          "caseId": "SHRI_PI_067",
          "caseName": "Verify kin last name with special characters",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.741Z",
          "endedAt": "2026-06-23T11:15:19.752Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "kin_last_name": "DOE@NAME"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "174",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"ae-BO7jW1XRX9OMR2GgMX1JClE4Ct4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1006",
                "error": "Invalid kin name,"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"kin_last_name\":\"DOE@NAME\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1006",
              "passed": true,
              "message": "FIXUSER1006 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1006"
          ],
          "actualErrorCodes": [
            "FIXUSER1006"
          ]
        },
        {
          "caseId": "SHRI_PI_068",
          "caseName": "Verify valid kin middle name",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.752Z",
          "endedAt": "2026-06-23T11:15:19.774Z",
          "durationMs": 22,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "kin_middle_name": "KUMAR"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "18",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"kin_middle_name\":\"KUMAR\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_069",
          "caseName": "Verify null kin middle name",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.774Z",
          "endedAt": "2026-06-23T11:15:19.856Z",
          "durationMs": 82,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "kin_middle_name": null
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "79",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"kin_middle_name\":null}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_070",
          "caseName": "Verify valid education update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:19.856Z",
          "endedAt": "2026-06-23T11:15:19.885Z",
          "durationMs": 29,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "27",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_071",
          "caseName": "Verify invalid education",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.885Z",
          "endedAt": "2026-06-23T11:15:19.936Z",
          "durationMs": 51,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "PhD",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "236",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "etag": "W/\"ec-Obpa3d5sSa2AQeb/hY7x/pk1nd4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "48",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": " ",
                "errorCode": "FIXUSER1216",
                "error": "Invalid education, possible values are Under Graduate, Graduate, Post Graduate"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"PhD\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1216",
              "passed": true,
              "message": "FIXUSER1216 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1216"
          ],
          "actualErrorCodes": [
            "FIXUSER1216"
          ]
        },
        {
          "caseId": "SHRI_PI_072",
          "caseName": "Verify null education",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:19.936Z",
          "endedAt": "2026-06-23T11:15:19.964Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": null,
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:19 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "25",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":null,\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Body statusCode should be 201",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_073",
          "caseName": "Verify empty education",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:19.964Z",
          "endedAt": "2026-06-23T11:15:20.028Z",
          "durationMs": 64,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "236",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"ec-Obpa3d5sSa2AQeb/hY7x/pk1nd4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "61",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": " ",
                "errorCode": "FIXUSER1216",
                "error": "Invalid education, possible values are Under Graduate, Graduate, Post Graduate"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1216",
              "passed": true,
              "message": "FIXUSER1216 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1216"
          ],
          "actualErrorCodes": [
            "FIXUSER1216"
          ]
        },
        {
          "caseId": "SHRI_PI_074",
          "caseName": "Verify valid source of income update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:20.029Z",
          "endedAt": "2026-06-23T11:15:20.059Z",
          "durationMs": 30,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "27",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_075",
          "caseName": "Verify invalid source of income",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.059Z",
          "endedAt": "2026-06-23T11:15:20.131Z",
          "durationMs": 72,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Crypto"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "253",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"fd-XGcJ4EjrKoiXsHBqhidiNxXTpVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXUSER1217",
                "error": "IInvalid source_of_income , possible values are Salary, Business, Investment, Dependent, Other"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Crypto\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1217",
              "passed": true,
              "message": "FIXUSER1217 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1217"
          ],
          "actualErrorCodes": [
            "FIXUSER1217"
          ]
        },
        {
          "caseId": "SHRI_PI_076",
          "caseName": "Verify null source of income",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:20.131Z",
          "endedAt": "2026-06-23T11:15:20.230Z",
          "durationMs": 99,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": null
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "27",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":null}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Body statusCode should be 201",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Response message should be \"User Updated\"",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_077",
          "caseName": "Verify empty source of income",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.230Z",
          "endedAt": "2026-06-23T11:15:20.331Z",
          "durationMs": 101,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": ""
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "253",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"fd-XGcJ4EjrKoiXsHBqhidiNxXTpVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXUSER1217",
                "error": "IInvalid source_of_income , possible values are Salary, Business, Investment, Dependent, Other"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1217",
              "passed": true,
              "message": "FIXUSER1217 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1217"
          ],
          "actualErrorCodes": [
            "FIXUSER1217"
          ]
        },
        {
          "caseId": "SHRI_PI_078",
          "caseName": "Verify valid user tax status update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.331Z",
          "endedAt": "2026-06-23T11:15:20.349Z",
          "durationMs": 18,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "user_tax_status": "Resident Indian"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "15",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"user_tax_status\":\"Resident Indian\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_079",
          "caseName": "Verify valid residence update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.349Z",
          "endedAt": "2026-06-23T11:15:20.363Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "residence": "Owned"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"residence\":\"Owned\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_080",
          "caseName": "Verify valid boolean fields update",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.363Z",
          "endedAt": "2026-06-23T11:15:20.434Z",
          "durationMs": 71,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "is_aadhaar_verified": true,
            "is_bank_present": false,
            "is_pan_verified": true
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "68",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"is_aadhaar_verified\":true,\"is_bank_present\":false,\"is_pan_verified\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_081",
          "caseName": "Verify is_aadhaar_verified as string",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.434Z",
          "endedAt": "2026-06-23T11:15:20.451Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "is_aadhaar_verified": "true"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "14",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"is_aadhaar_verified\":\"true\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_082",
          "caseName": "Verify is_bank_present as number",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.451Z",
          "endedAt": "2026-06-23T11:15:20.527Z",
          "durationMs": 76,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "is_bank_present": 1
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "73",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"is_bank_present\":1}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_083",
          "caseName": "Verify invalid Aadhaar verification date",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.527Z",
          "endedAt": "2026-06-23T11:15:20.550Z",
          "durationMs": 23,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "user_aadhaar_verification_date": "not-a-date"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "198",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"c6-XTIdyd90X4stMIFkP0R2rKpvhwA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "19",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1004",
                "error": "Please enter a valid DOB (Ex. YYYY-MM-DD)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"user_aadhaar_verification_date\":\"not-a-date\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            },
            {
              "description": "Response should contain FIXUSER1004",
              "passed": true,
              "message": "FIXUSER1004 present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [
            "FIXUSER1004"
          ],
          "actualErrorCodes": [
            "FIXUSER1004"
          ]
        },
        {
          "caseId": "SHRI_PI_084",
          "caseName": "Verify invalid PAN verification date",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.550Z",
          "endedAt": "2026-06-23T11:15:20.627Z",
          "durationMs": 77,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "user_pan_verification_date": "not-a-date"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "75",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"user_pan_verification_date\":\"not-a-date\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_085",
          "caseName": "Verify valid ISO date fields",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.627Z",
          "endedAt": "2026-06-23T11:15:20.647Z",
          "durationMs": 20,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "user_aadhaar_verification_date": "2026-05-12T00:00:00.000Z",
            "user_pan_verification_date": "2026-05-12T00:00:00.000Z"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "198",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"c6-XTIdyd90X4stMIFkP0R2rKpvhwA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "17",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1004",
                "error": "Please enter a valid DOB (Ex. YYYY-MM-DD)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"user_aadhaar_verification_date\":\"2026-05-12T00:00:00.000Z\",\"user_pan_verification_date\":\"2026-05-12T00:00:00.000Z\"}'",
          "validations": [
            {
              "description": "ISO verification dates should be handled according to live contract",
              "passed": true,
              "message": "API rejected ISO verification dates with FIXUSER1004"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1004"
          ]
        },
        {
          "caseId": "SHRI_PI_086",
          "caseName": "Verify client provided partner_url",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.647Z",
          "endedAt": "2026-06-23T11:15:20.726Z",
          "durationMs": 79,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "partner_url": "https://test.com"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "76",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"partner_url\":\"https://test.com\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_090",
          "caseName": "Verify API without JWT",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:20.726Z",
          "endedAt": "2026-06-23T11:15:20.732Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "email": "no.jwt@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"a9-ra1+G8sgf4WPH3Nd3PzEHUQT2fc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"email\":\"no.jwt@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401 OK, body.statusCode=401"
            },
            {
              "description": "Response message should be \"x-partner-key is required\"",
              "passed": true,
              "message": "message=\"x-partner-key is required\""
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_091",
          "caseName": "Verify API with invalid JWT",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:20.733Z",
          "endedAt": "2026-06-23T11:15:20.737Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer invalid.jwt.token"
          },
          "requestPayload": {
            "email": "invalid.jwt@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer invalid.jwt.token' \\\n  -d '{\"email\":\"invalid.jwt@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401 OK, body.statusCode=401"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_092",
          "caseName": "Verify API with expired JWT",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:20.738Z",
          "endedAt": "2026-06-23T11:15:20.744Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjEsImlhdCI6MSwidXNlcl9pZCI6ImV4cGlyZWQifQ.invalid"
          },
          "requestPayload": {
            "email": "expired.jwt@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjEsImlhdCI6MSwidXNlcl9pZCI6ImV4cGlyZWQifQ.invalid' \\\n  -d '{\"email\":\"expired.jwt@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401 OK, body.statusCode=401"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_094",
          "caseName": "Verify unknown field rejection",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.744Z",
          "endedAt": "2026-06-23T11:15:20.762Z",
          "durationMs": 18,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "unknown_field": 1
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "15",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"unknown_field\":1}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_095",
          "caseName": "Verify personal-details response headers",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:20.762Z",
          "endedAt": "2026-06-23T11:15:20.827Z",
          "durationMs": 65,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "headers.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "63",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"headers.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            },
            {
              "description": "Required response headers should be present",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_096",
          "caseName": "Verify sensitive personal data not echoed back raw",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.827Z",
          "endedAt": "2026-06-23T11:15:20.840Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "sensitive.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "pan": "ABCPE1234F",
            "dob": "1995-08-30"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"sensitive.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"pan\":\"ABCPE1234F\",\"dob\":\"1995-08-30\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            },
            {
              "description": "Response should not expose the exact PAN or DOB values",
              "passed": true,
              "message": "No PAN/DOB leakage in response body"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        },
        {
          "caseId": "SHRI_PI_087",
          "caseName": "Verify duplicate email mapping",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:20.840Z",
          "endedAt": "2026-06-23T11:15:20.869Z",
          "durationMs": 29,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "duplicate@fixerra.in",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "26",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"duplicate@fixerra.in\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Duplicate email fixture should be rejected when present, otherwise update must remain controlled",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_088",
          "caseName": "Verify email verification gate",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:20.869Z",
          "endedAt": "2026-06-23T11:15:20.942Z",
          "durationMs": 73,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "email.gate@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "0",
            "content-security-policy": "default-src 'self'",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "69",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"email.gate@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\"}'",
          "validations": [
            {
              "description": "Email gate should either allow update or return a controlled 403/400 response",
              "passed": true,
              "message": "PUT /user returns an empty body for NBFC issuers via this query-param path (acceptable)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_089",
          "caseName": "Verify generic update failure",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.942Z",
          "endedAt": "2026-06-23T11:15:20.960Z",
          "durationMs": 18,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "unknown_field_for_failure_path": true
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "16",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"unknown_field_for_failure_path\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Response should be a structured error",
              "passed": true,
              "message": "Structured error response present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_PI_093",
          "caseName": "Verify restricted partner field violation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:20.961Z",
          "endedAt": "2026-06-23T11:15:20.973Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "email": "suite.personal@fixerra.test",
            "occupation": "SALARIED",
            "annual_income": "15L - 25L Per Annum",
            "marital_status": "Unmarried",
            "mother_name": "TEST MOTHER",
            "father_name": "TEST FATHER",
            "education": "Graduate",
            "source_of_income": "Salary",
            "partner_url": "https://restricted.partner.test"
          },
          "requestQuery": {
            "issuer_code": "SHRI",
            "issuer_type": "NBFC"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "305",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:20 GMT",
            "etag": "W/\"131-RoGqNFkGQdi5KnRr6xjFEtDZh7c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Invalid field in request",
                "f_error_message": "You are not allowed to update unspecified fields.",
                "errorCode": "FIXUSER1385",
                "error": "The request contains one or more fields that are not allowed to be updated."
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SHRI&issuer_type=NBFC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"email\":\"suite.personal@fixerra.test\",\"occupation\":\"SALARIED\",\"annual_income\":\"15L - 25L Per Annum\",\"marital_status\":\"Unmarried\",\"mother_name\":\"TEST MOTHER\",\"father_name\":\"TEST FATHER\",\"education\":\"Graduate\",\"source_of_income\":\"Salary\",\"partner_url\":\"https://restricted.partner.test\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK, body.statusCode=400"
            },
            {
              "description": "Field is not updatable via authMode:partner (rejected before persistence)",
              "passed": true,
              "message": "Partner-mode update correctly rejected for this field"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1385"
          ]
        }
      ],
      "summary": {
        "total": 84,
        "passed": 84,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 3497
      }
    },
    {
      "stepId": "step-08-nominee",
      "stepName": "Nominee",
      "cases": [
        {
          "caseId": "SHRI_NOMINEE_001",
          "caseName": "Get existing nominees (SHRI)",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:20.973Z",
          "endedAt": "2026-06-23T11:15:21.036Z",
          "durationMs": 63,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "63",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"3f-oCPC8DEMdT63LEPOmlpkObbO8j8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "60",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": []
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            }
          ],
          "docsFile": "user-services/API_QA_PI_GET_USER_NOMINEE.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_002",
          "caseName": "Create valid adult nominee (SHRI)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:21.036Z",
          "endedAt": "2026-06-23T11:15:21.130Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "518",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"206-m03OhdYfgsBTSOXCIM+YSgQqmNo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "90",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": true,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "Ramesh",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_pan": "",
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10816,
              "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
              "created_at": "2026-06-23T11:15:21.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain nominee ID",
              "passed": true,
              "message": "Nominee ID present"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_USER_NOMINEE.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_003",
          "caseName": "Get nominee by id returns the created nominee",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-nominee/53dded94-1343-4bcd-be2c-af2294fd797c",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:21.130Z",
          "endedAt": "2026-06-23T11:15:21.145Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "636",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"27c-EwP2P8wfrUXETWtM+4T973IMDU4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "User already exists.",
            "payload": {
              "is_default": true,
              "id": 10816,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
              "first_name": "Ramesh",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_phone": null,
              "nominee_email": null,
              "nominee_pan": "",
              "nominee_name_consent": null,
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "created_at": "2026-06-23T11:15:21.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": null
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee/53dded94-1343-4bcd-be2c-af2294fd797c?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Returned nominee should match created first name",
              "passed": true,
              "message": "first_name=Ramesh"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_004",
          "caseName": "Update nominee relation by id",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/53dded94-1343-4bcd-be2c-af2294fd797c",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:21.145Z",
          "endedAt": "2026-06-23T11:15:21.170Z",
          "durationMs": 25,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "nominee_relation": "Mother",
            "nominee_salutation": "MRS"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "624",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"270-sxHl+bzhtcpJ8jUnicbIhw1XFF4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "22",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "SUCCESS",
            "payload": {
              "is_default": true,
              "id": 10816,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
              "first_name": "Ramesh",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_phone": null,
              "nominee_email": null,
              "nominee_pan": "",
              "nominee_name_consent": null,
              "nominee_relation": "Mother",
              "nominee_salutation": "MRS",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "created_at": "2026-06-23T11:15:21.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/53dded94-1343-4bcd-be2c-af2294fd797c?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"nominee_relation\":\"Mother\",\"nominee_salutation\":\"MRS\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_005",
          "caseName": "Create minor nominee with guardian details",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:21.170Z",
          "endedAt": "2026-06-23T11:15:21.197Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Chintu",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "2015-06-10",
            "nominee_relation": "Son",
            "nominee_salutation": "MR",
            "is_default": false,
            "guardian_first_name": "Ramesh",
            "guardian_last_name": "Kumar",
            "guardian_dob": "1990-04-15",
            "guardian_salutation": "MR",
            "guardian_relation": "Father"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "611",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"263-/k9v1e9PMlMpXWeQmHAIeE5rHIA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "24",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "Chintu",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "2015-06-10",
              "nominee_pan": "",
              "nominee_relation": "Son",
              "nominee_salutation": "MR",
              "guardian_first_name": "Ramesh",
              "guardian_last_name": "Kumar",
              "guardian_dob": "1990-04-15",
              "guardian_relation": "Father",
              "guardian_salutation": "MR",
              "nominee_name_consent": null,
              "id": 10817,
              "f_user_nominee_id": "e6a94c9f-d726-49f8-8c1a-c97589b7ccb9",
              "created_at": "2026-06-23T11:15:21.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Chintu\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"2015-06-10\",\"nominee_relation\":\"Son\",\"nominee_salutation\":\"MR\",\"is_default\":false,\"guardian_first_name\":\"Ramesh\",\"guardian_last_name\":\"Kumar\",\"guardian_dob\":\"1990-04-15\",\"guardian_salutation\":\"MR\",\"guardian_relation\":\"Father\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain nominee ID",
              "passed": true,
              "message": "Nominee ID present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_006",
          "caseName": "Delete nominee by id (cleanup minor nominee)",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/user-nominee/e6a94c9f-d726-49f8-8c1a-c97589b7ccb9",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:21.197Z",
          "endedAt": "2026-06-23T11:15:21.279Z",
          "durationMs": 82,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "686",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"2ae-eqX2bHqeDXzS9wvR4sANWNk5Qlc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "80",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "is_default": false,
              "id": 10817,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "f_user_nominee_id": "e6a94c9f-d726-49f8-8c1a-c97589b7ccb9",
              "first_name": "Chintu",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "2015-06-10",
              "nominee_phone": null,
              "nominee_email": null,
              "nominee_pan": "",
              "nominee_name_consent": null,
              "nominee_relation": "Son",
              "nominee_salutation": "MR",
              "guardian_first_name": "Ramesh",
              "guardian_last_name": "Kumar",
              "created_at": "2026-06-23T11:15:21.000Z",
              "guardian_dob": "1990-04-15T00:00:00.000Z",
              "guardian_relation": "Father",
              "guardian_salutation": "MR",
              "guardian_pan": "",
              "deleted_at": "2026-06-23T11:15:21.268Z"
            }
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/user-nominee/e6a94c9f-d726-49f8-8c1a-c97589b7ccb9?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_007",
          "caseName": "List nominees with explicit pagination",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:21.279Z",
          "endedAt": "2026-06-23T11:15:21.326Z",
          "durationMs": 47,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "page": "1",
            "limit": "5",
            "f_code": "BAJ"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "626",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"272-1u6LCGl5QTEHXw6W4otwSWAB8iI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "44",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "is_default": true,
                "id": 10816,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
                "first_name": "Ramesh",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Mother",
                "nominee_salutation": "MRS",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:21.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee?page=1&limit=5&f_code=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_008",
          "caseName": "List nominees with invalid pagination is auto-corrected",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-nominee",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:21.326Z",
          "endedAt": "2026-06-23T11:15:21.339Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "page": "-1",
            "limit": "abc",
            "f_code": "BAJ"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "626",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"272-1u6LCGl5QTEHXw6W4otwSWAB8iI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "is_default": true,
                "id": 10816,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
                "first_name": "Ramesh",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Mother",
                "nominee_salutation": "MRS",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:21.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee?page=-1&limit=abc&f_code=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_009",
          "caseName": "Create nominee via legacy POST /user-nominee route",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:21.339Z",
          "endedAt": "2026-06-23T11:15:21.449Z",
          "durationMs": 110,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Suresh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Brother",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "520",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"208-ussxJeaGf8FtVryVuMT7YgV8QMI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "107",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "Suresh",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_pan": "",
              "nominee_relation": "Brother",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10818,
              "f_user_nominee_id": "764783ff-43d8-4fb4-b32d-8309aab4a25e",
              "created_at": "2026-06-23T11:15:21.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Suresh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Brother\",\"nominee_salutation\":\"MR\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain nominee ID",
              "passed": true,
              "message": "Nominee ID present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_010",
          "caseName": "Delete legacy-route nominee (cleanup)",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/user-nominee/764783ff-43d8-4fb4-b32d-8309aab4a25e",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:21.449Z",
          "endedAt": "2026-06-23T11:15:21.561Z",
          "durationMs": 112,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "647",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"287-ZwhRIZLk2XfegN6vLjkFqLdCeDY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "110",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "is_default": false,
              "id": 10818,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "f_user_nominee_id": "764783ff-43d8-4fb4-b32d-8309aab4a25e",
              "first_name": "Suresh",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_phone": null,
              "nominee_email": null,
              "nominee_pan": "",
              "nominee_name_consent": null,
              "nominee_relation": "Brother",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "created_at": "2026-06-23T11:15:21.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": "2026-06-23T11:15:21.550Z"
            }
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/user-nominee/764783ff-43d8-4fb4-b32d-8309aab4a25e?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_011",
          "caseName": "Create nominee with relation Mother",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:21.561Z",
          "endedAt": "2026-06-23T11:15:21.595Z",
          "durationMs": 34,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Sunita",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Mother",
            "nominee_salutation": "MRS",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "520",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"208-nnWg2kWlIIcj399RB64tDOBXxuo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "31",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "Sunita",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_pan": "",
              "nominee_relation": "Mother",
              "nominee_salutation": "MRS",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10819,
              "f_user_nominee_id": "a1e6a085-193a-47e7-af58-bfafb958c7ff",
              "created_at": "2026-06-23T11:15:21.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Sunita\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Mother\",\"nominee_salutation\":\"MRS\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain nominee ID",
              "passed": true,
              "message": "Nominee ID present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_012",
          "caseName": "Create nominee with relation Husband",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:21.595Z",
          "endedAt": "2026-06-23T11:15:21.741Z",
          "durationMs": 146,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Rohan",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Husband",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "519",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"207-omAzaRbMjg+bVGUij57MBscMubQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "142",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "Rohan",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_pan": "",
              "nominee_relation": "Husband",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10820,
              "f_user_nominee_id": "8e68596d-2b54-4cd5-bb4d-448e040eadd0",
              "created_at": "2026-06-23T11:15:21.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Rohan\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Husband\",\"nominee_salutation\":\"MR\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain nominee ID",
              "passed": true,
              "message": "Nominee ID present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_013",
          "caseName": "Create nominee with relation Daughter",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:21.741Z",
          "endedAt": "2026-06-23T11:15:21.775Z",
          "durationMs": 34,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Priya",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1996-02-20",
            "nominee_relation": "Daughter",
            "nominee_salutation": "MS",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "520",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"208-fHz1QTAHmeMs4PQBBJtBCRHogwA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "32",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "Priya",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1996-02-20",
              "nominee_pan": "",
              "nominee_relation": "Daughter",
              "nominee_salutation": "MS",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10821,
              "f_user_nominee_id": "7b43986f-90fd-416f-a908-b69b20c4c4c9",
              "created_at": "2026-06-23T11:15:21.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Priya\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1996-02-20\",\"nominee_relation\":\"Daughter\",\"nominee_salutation\":\"MS\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain nominee ID",
              "passed": true,
              "message": "Nominee ID present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_014",
          "caseName": "Create nominee with a valid nominee PAN",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:21.775Z",
          "endedAt": "2026-06-23T11:15:21.932Z",
          "durationMs": 157,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Vikram",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "ABCPE1234F",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "584",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:21 GMT",
            "etag": "W/\"248-R9QdAHsz9QzNMyqVjX5aQFXKJ+Y\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "154",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "Vikram",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_pan": "249a22814bf213a7ff2e68cfa58da9d3:590165e106e1a2c8480111854268324f",
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10822,
              "f_user_nominee_id": "c7cf88c9-2cd2-4829-b531-12df3548698d",
              "created_at": "2026-06-23T11:15:21.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Vikram\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"ABCPE1234F\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain nominee ID",
              "passed": true,
              "message": "Nominee ID present"
            },
            {
              "description": "Stored nominee_pan should not be returned in plaintext",
              "passed": true,
              "message": "nominee_pan not echoed in plaintext"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_015",
          "caseName": "Reject relation \"Self\" (not in allowed relation list)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:21.933Z",
          "endedAt": "2026-06-23T11:15:22.337Z",
          "durationMs": 404,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Self",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "190",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"be-OjnPZp7BitXUvDxYGkRz6nke5Tw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "402",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1071",
                "error": "Nominee relation should be string"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Self\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1071",
              "passed": true,
              "message": "FIXUSER1071 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1071"
          ],
          "actualErrorCodes": [
            "FIXUSER1071"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_016",
          "caseName": "Reject nominee first name containing a SQL-injection payload",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.337Z",
          "endedAt": "2026-06-23T11:15:22.532Z",
          "durationMs": 195,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh' OR 1=1 --",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"c4-X6XMD/1SiqZk3SZQkx9MAL+TIlU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "192",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1069",
                "error": "Please enter a valid nominee first name"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh'\\'' OR 1=1 --\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1069",
              "passed": true,
              "message": "FIXUSER1069 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1069"
          ],
          "actualErrorCodes": [
            "FIXUSER1069"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_017",
          "caseName": "Reject nominee first name containing an XSS payload",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.532Z",
          "endedAt": "2026-06-23T11:15:22.544Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "<script>alert(1)</script>",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"c4-X6XMD/1SiqZk3SZQkx9MAL+TIlU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1069",
                "error": "Please enter a valid nominee first name"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"<script>alert(1)</script>\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1069",
              "passed": true,
              "message": "FIXUSER1069 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1069"
          ],
          "actualErrorCodes": [
            "FIXUSER1069"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_018",
          "caseName": "Create nominee whose name matches the applicant's own PAN name",
          "service": "user-services",
          "method": "POST",
          "url": "/api/v1/user-nominee",
          "status": "skipped",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "expectedErrorCodes": [],
          "actualErrorCodes": [],
          "validations": [],
          "skippedReason": "panFirstName not available from PAN verification step"
        },
        {
          "caseId": "SHRI_NOMINEE_019",
          "caseName": "Reject guardian DOB indicating a minor guardian",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.544Z",
          "endedAt": "2026-06-23T11:15:22.554Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Chintu",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "2015-06-10",
            "nominee_relation": "Son",
            "nominee_salutation": "MR",
            "is_default": true,
            "guardian_first_name": "Ramesh",
            "guardian_last_name": "Kumar",
            "guardian_salutation": "MR",
            "guardian_relation": "Father",
            "guardian_dob": "2015-01-01"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "227",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"e3-zPo/YiHUA2RV3ID0wBVdHjHoi04\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "Nominee Guardian should be an adult",
                "f_error_message": "",
                "errorCode": "FIXUSER1080",
                "error": "Nominee Guardian should be an adult"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Chintu\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"2015-06-10\",\"nominee_relation\":\"Son\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"guardian_first_name\":\"Ramesh\",\"guardian_last_name\":\"Kumar\",\"guardian_salutation\":\"MR\",\"guardian_relation\":\"Father\",\"guardian_dob\":\"2015-01-01\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1080",
              "passed": true,
              "message": "FIXUSER1080 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1080"
          ],
          "actualErrorCodes": [
            "FIXUSER1080"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_020",
          "caseName": "Reject invalid nominee relation",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.554Z",
          "endedAt": "2026-06-23T11:15:22.630Z",
          "durationMs": 76,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Uncle",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "190",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"be-OjnPZp7BitXUvDxYGkRz6nke5Tw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "72",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1071",
                "error": "Nominee relation should be string"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Uncle\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1071",
              "passed": true,
              "message": "FIXUSER1071 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1071"
          ],
          "actualErrorCodes": [
            "FIXUSER1071"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_021",
          "caseName": "Reject invalid nominee salutation",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.630Z",
          "endedAt": "2026-06-23T11:15:22.641Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "DR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "192",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"c0-4Kbf/SiUHV6/UZ/WEtYqXa6sxh4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1077",
                "error": "Nominee salutation should be string"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"DR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1077",
              "passed": true,
              "message": "FIXUSER1077 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1077"
          ],
          "actualErrorCodes": [
            "FIXUSER1077"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_022",
          "caseName": "Reject invalid nominee PAN format",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.641Z",
          "endedAt": "2026-06-23T11:15:22.652Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "INVALID123",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "205",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"INVALID123\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1001",
              "passed": true,
              "message": "FIXUSER1001 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1001"
          ],
          "actualErrorCodes": [
            "FIXUSER1001"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_023",
          "caseName": "Reject invalid nominee DOB format",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.653Z",
          "endedAt": "2026-06-23T11:15:22.664Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "not-a-date",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "202",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"ca-eiW3jCKud9aQN9u5BBubRqxLIjc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1072",
                "error": "Please enter a valid nominee DOB (YYYY-MM-DD)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"not-a-date\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1072",
              "passed": true,
              "message": "FIXUSER1072 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1072"
          ],
          "actualErrorCodes": [
            "FIXUSER1072"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_024",
          "caseName": "Reject future nominee DOB",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.664Z",
          "endedAt": "2026-06-23T11:15:22.675Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "2099-01-01",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "194",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"c2-ue3VX43dASmbpm+YepGpr2KuIH4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1094",
                "error": "Date of birth cannot be in the future"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"2099-01-01\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1094",
              "passed": true,
              "message": "FIXUSER1094 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1094"
          ],
          "actualErrorCodes": [
            "FIXUSER1094"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_025",
          "caseName": "Reject numeric nominee first name",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.675Z",
          "endedAt": "2026-06-23T11:15:22.729Z",
          "durationMs": 54,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "12345",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"c4-X6XMD/1SiqZk3SZQkx9MAL+TIlU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "52",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1069",
                "error": "Please enter a valid nominee first name"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"12345\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1069",
              "passed": true,
              "message": "FIXUSER1069 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1069"
          ],
          "actualErrorCodes": [
            "FIXUSER1069"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_026",
          "caseName": "Reject invalid guardian salutation",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.729Z",
          "endedAt": "2026-06-23T11:15:22.741Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "2015-06-10",
            "nominee_relation": "Son",
            "nominee_salutation": "MR",
            "is_default": true,
            "guardian_first_name": "Ramesh",
            "guardian_salutation": "DOCTOR"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "218",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"da-pjBkSM33AvMqT+P5XWNXLQWArJQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1034",
                "error": "Invalid value for nominee salutation. Valid values: MR,MRS,MS"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"2015-06-10\",\"nominee_relation\":\"Son\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"guardian_first_name\":\"Ramesh\",\"guardian_salutation\":\"DOCTOR\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1034",
              "passed": true,
              "message": "FIXUSER1034 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1034"
          ],
          "actualErrorCodes": [
            "FIXUSER1034"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_027",
          "caseName": "Reject empty nominee payload",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.741Z",
          "endedAt": "2026-06-23T11:15:22.755Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {},
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "430",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"1ae-nw3d+67Qw90qUsEGlMMJ2T+FuiI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1072",
                "error": "Please enter a valid nominee DOB (YYYY-MM-DD)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1071",
                "error": "Nominee relation should be string"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1077",
                "error": "Nominee salutation should be string"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1072",
            "FIXUSER1071",
            "FIXUSER1077"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_030",
          "caseName": "Get nominee by unknown id does not crash",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-nominee/11111111-2222-4333-8444-555555555555",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:22.755Z",
          "endedAt": "2026-06-23T11:15:22.831Z",
          "durationMs": 76,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "76",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"4c-Npwn0S/XgUnPsRtSFGf2+NXMhnQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "14",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 404,
            "message": "No such user exists!",
            "payload": {}
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee/11111111-2222-4333-8444-555555555555?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_031",
          "caseName": "Update nominee with unknown id does not crash",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/11111111-2222-4333-8444-555555555555",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.831Z",
          "endedAt": "2026-06-23T11:15:22.860Z",
          "durationMs": 29,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "nominee_relation": "Mother"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "26",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/11111111-2222-4333-8444-555555555555?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"nominee_relation\":\"Mother\"}'",
          "validations": [
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 400 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_032",
          "caseName": "Delete nominee with unknown id does not crash",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/user-nominee/11111111-2222-4333-8444-555555555555",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:22.860Z",
          "endedAt": "2026-06-23T11:15:22.913Z",
          "durationMs": 53,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "50",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/user-nominee/11111111-2222-4333-8444-555555555555?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 400 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_040",
          "caseName": "List nominees without auth is rejected",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:22.913Z",
          "endedAt": "2026-06-23T11:15:22.930Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"a9-ra1+G8sgf4WPH3Nd3PzEHUQT2fc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "14",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Should reject with 401 auth error",
              "passed": true,
              "message": "401 \"x-partner-key is required\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_041",
          "caseName": "Create nominee without auth is rejected",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:22.930Z",
          "endedAt": "2026-06-23T11:15:22.935Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"a9-ra1+G8sgf4WPH3Nd3PzEHUQT2fc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Should reject with 401 auth error",
              "passed": true,
              "message": "401 \"x-partner-key is required\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_042",
          "caseName": "List nominees with invalid JWT is rejected",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:22.936Z",
          "endedAt": "2026-06-23T11:15:22.941Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer invalid.jwt.token"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer invalid.jwt.token'",
          "validations": [
            {
              "description": "Should reject with 401 auth error",
              "passed": true,
              "message": "401 \"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_043",
          "caseName": "Delete nominee without auth is rejected",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/user-nominee/11111111-2222-4333-8444-555555555555",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:22.941Z",
          "endedAt": "2026-06-23T11:15:22.945Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/user-nominee/11111111-2222-4333-8444-555555555555' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Should reject with 401 auth error",
              "passed": true,
              "message": "401 \"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_044",
          "caseName": "Create nominee via three-part full_name is parsed into first/middle/last",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:22.945Z",
          "endedAt": "2026-06-23T11:15:22.977Z",
          "durationMs": 32,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "full_name": "John A Doe",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "518",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:22 GMT",
            "etag": "W/\"206-xvMtFBF/w56Wj92+iJ6OBDU1WTM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "29",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "John",
              "middle_name": "A",
              "last_name": "Doe",
              "nominee_dob": "1990-04-15",
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_pan": null,
              "nominee_name_consent": null,
              "id": 10823,
              "f_user_nominee_id": "00498034-d29b-4f19-8d90-25c622d7518c",
              "created_at": "2026-06-23T11:15:22.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"full_name\":\"John A Doe\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "full_name should be parsed into first/middle/last",
              "passed": true,
              "message": "full_name parsed correctly"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_045",
          "caseName": "Create nominee via single-word full_name auto-sets last_name to \".\"",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:22.977Z",
          "endedAt": "2026-06-23T11:15:23.059Z",
          "durationMs": 82,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "full_name": "Madonna",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "518",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"206-cfJJqsf2evUuUz1SKc+O1758TJw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "79",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "Madonna",
              "middle_name": "",
              "last_name": ".",
              "nominee_dob": "1990-04-15",
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_pan": null,
              "nominee_name_consent": null,
              "id": 10824,
              "f_user_nominee_id": "07a57f39-14f6-4a68-9a16-3eaa30361d66",
              "created_at": "2026-06-23T11:15:23.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"full_name\":\"Madonna\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "last_name should auto-default to \".\"",
              "passed": true,
              "message": "last_name=\".\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_046",
          "caseName": "Reject full_name containing digits",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:23.059Z",
          "endedAt": "2026-06-23T11:15:23.071Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "full_name": "John2 Doe",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "412",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"19c-02mEMyJzCgwNYhtIHj41VHZ/VZs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1234",
                "error": "Full name must meet the following criteria: Must start with a letter and can only include letters and optional spaces between words. Can end with a dot (.) only if there is at least one space-separated word before the dot. Must not start or end with space"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"full_name\":\"John2 Doe\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1234",
              "passed": true,
              "message": "FIXUSER1234 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1234"
          ],
          "actualErrorCodes": [
            "FIXUSER1234"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_047",
          "caseName": "Reject full_name equal to \".\"",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:23.071Z",
          "endedAt": "2026-06-23T11:15:23.130Z",
          "durationMs": 59,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "full_name": ".",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "412",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"19c-02mEMyJzCgwNYhtIHj41VHZ/VZs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "55",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1234",
                "error": "Full name must meet the following criteria: Must start with a letter and can only include letters and optional spaces between words. Can end with a dot (.) only if there is at least one space-separated word before the dot. Must not start or end with space"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"full_name\":\".\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1234",
              "passed": true,
              "message": "FIXUSER1234 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1234"
          ],
          "actualErrorCodes": [
            "FIXUSER1234"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_049",
          "caseName": "Reject payload missing both full_name and first_name",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:23.130Z",
          "endedAt": "2026-06-23T11:15:23.143Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "214",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"d6-xip02d/MMytI/+Z0vUw/ObZVaS8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1227",
                "error": "Either full_name or first_name and last_name are required"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1227",
              "passed": true,
              "message": "FIXUSER1227 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1227"
          ],
          "actualErrorCodes": [
            "FIXUSER1227"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_060",
          "caseName": "Reject middle_name with invalid characters",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:23.144Z",
          "endedAt": "2026-06-23T11:15:23.156Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "A1",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "197",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"c5-nkE2baDfMZRG8VK0+mhypSY/cP8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1205",
                "error": "Please enter a valid nominee middle name"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"A1\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1205",
              "passed": true,
              "message": "FIXUSER1205 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1205"
          ],
          "actualErrorCodes": [
            "FIXUSER1205"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_061",
          "caseName": "Reject last_name with invalid characters",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:23.156Z",
          "endedAt": "2026-06-23T11:15:23.168Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "D0e",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "195",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"c3-X/VCKSzEyRS2kQq2r3JvtQMi7nA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1356",
                "error": "Please enter a valid nominee last name"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"D0e\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1356",
              "passed": true,
              "message": "FIXUSER1356 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1356"
          ],
          "actualErrorCodes": [
            "FIXUSER1356"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_062",
          "caseName": "Reject nominee_phone that is not a 10-digit number",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:23.169Z",
          "endedAt": "2026-06-23T11:15:23.237Z",
          "durationMs": 68,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true,
            "nominee_phone": "123"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "249",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"f9-Myqeg6Qa6NPvZ5ntMiEabpakw8Q\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "66",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "Nominee phone number must be exactly 10 digits",
                "errorCode": "FIXUSER1501",
                "error": "Nominee phone number must be exactly 10 digits"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"nominee_phone\":\"123\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1501",
              "passed": true,
              "message": "FIXUSER1501 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1501"
          ],
          "actualErrorCodes": [
            "FIXUSER1501"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_063",
          "caseName": "Create nominee with a valid nominee_phone",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:23.237Z",
          "endedAt": "2026-06-23T11:15:23.271Z",
          "durationMs": 34,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Phoneuser",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false,
            "nominee_phone": "9999999998"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "551",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"227-PX6VSiE96NDd3Zhq86IXJyO/VvY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "31",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "Phoneuser",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_phone": "9999999998",
              "nominee_pan": "",
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10825,
              "f_user_nominee_id": "042cbf5f-580c-4277-8012-d9f9b4d992bb",
              "created_at": "2026-06-23T11:15:23.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Phoneuser\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false,\"nominee_phone\":\"9999999998\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain nominee ID",
              "passed": true,
              "message": "Nominee ID present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_065",
          "caseName": "Reject invalid nominee_email",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:23.271Z",
          "endedAt": "2026-06-23T11:15:23.330Z",
          "durationMs": 59,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true,
            "nominee_email": "a@b"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "249",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"f9-ZYyygy5kOMkTird/iKDJ4jZYqI0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "56",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "Nominee email address is not in a valid format",
                "errorCode": "FIXUSER1502",
                "error": "Nominee email address is not in a valid format"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"nominee_email\":\"a@b\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1502",
              "passed": true,
              "message": "FIXUSER1502 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1502"
          ],
          "actualErrorCodes": [
            "FIXUSER1502"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_066",
          "caseName": "Create nominee with a valid nominee_email",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:23.330Z",
          "endedAt": "2026-06-23T11:15:23.364Z",
          "durationMs": 34,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Emailuser",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false,
            "nominee_email": "qa.nominee@example.com"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "563",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"233-mPIGdz0tzinw1doIDlLTRWg395A\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "31",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "Emailuser",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_email": "qa.nominee@example.com",
              "nominee_pan": "",
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10826,
              "f_user_nominee_id": "866fa457-a282-425e-af0c-11fe0a0f3d58",
              "created_at": "2026-06-23T11:15:23.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Emailuser\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false,\"nominee_email\":\"qa.nominee@example.com\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain nominee ID",
              "passed": true,
              "message": "Nominee ID present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_067",
          "caseName": "Reject lowercase nominee_relation (case-sensitive enum)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:23.364Z",
          "endedAt": "2026-06-23T11:15:23.443Z",
          "durationMs": 79,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "190",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"be-OjnPZp7BitXUvDxYGkRz6nke5Tw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "76",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1071",
                "error": "Nominee relation should be string"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1071",
              "passed": true,
              "message": "FIXUSER1071 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1071"
          ],
          "actualErrorCodes": [
            "FIXUSER1071"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_068",
          "caseName": "Reject lowercase nominee_salutation (case-sensitive enum)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:23.443Z",
          "endedAt": "2026-06-23T11:15:23.529Z",
          "durationMs": 86,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Ramesh",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "mr",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "192",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"c0-4Kbf/SiUHV6/UZ/WEtYqXa6sxh4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "83",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1077",
                "error": "Nominee salutation should be string"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"mr\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1077",
              "passed": true,
              "message": "FIXUSER1077 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1077"
          ],
          "actualErrorCodes": [
            "FIXUSER1077"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_069",
          "caseName": "Reject minor nominee with no guardian_first_name at all",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:23.529Z",
          "endedAt": "2026-06-23T11:15:23.548Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Minor",
            "last_name": "Kumar",
            "nominee_dob": "2015-01-01",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "270",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"10e-X6mu6j9j7+8xsjVjZ7B6kN+acwI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "16",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1039",
                "error": "All fields of the guardian are required for minor nominees, guardian_first_name, guardian_last_name, guardian_dob"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Minor\",\"last_name\":\"Kumar\",\"nominee_dob\":\"2015-01-01\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1039",
              "passed": true,
              "message": "FIXUSER1039 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1039"
          ],
          "actualErrorCodes": [
            "FIXUSER1039"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_070",
          "caseName": "Reject invalid guardian_pan format",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:23.548Z",
          "endedAt": "2026-06-23T11:15:23.563Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Minor",
            "last_name": "Kumar",
            "nominee_dob": "2015-06-10",
            "nominee_relation": "Son",
            "nominee_salutation": "MR",
            "is_default": false,
            "guardian_first_name": "Ramesh",
            "guardian_last_name": "Kumar",
            "guardian_dob": "1990-04-15",
            "guardian_salutation": "MR",
            "guardian_pan": "123"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "214",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"d6-HeS8KVo5L+C0zN6UPq28ts/WRWI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "12",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1204",
                "error": "Please enter a valid guardian PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Minor\",\"last_name\":\"Kumar\",\"nominee_dob\":\"2015-06-10\",\"nominee_relation\":\"Son\",\"nominee_salutation\":\"MR\",\"is_default\":false,\"guardian_first_name\":\"Ramesh\",\"guardian_last_name\":\"Kumar\",\"guardian_dob\":\"1990-04-15\",\"guardian_salutation\":\"MR\",\"guardian_pan\":\"123\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1204",
              "passed": true,
              "message": "FIXUSER1204 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1204"
          ],
          "actualErrorCodes": [
            "FIXUSER1204"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_071",
          "caseName": "is_default=true unsets the previously default nominee",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:23.563Z",
          "endedAt": "2026-06-23T11:15:23.658Z",
          "durationMs": 95,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "NewDefault",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "522",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"20a-2AMtKSjo2u7ksOBuv/uoTuG1yJk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "92",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": true,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "NewDefault",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_pan": "",
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10827,
              "f_user_nominee_id": "86fa2523-60a7-49e8-9e7a-0c33b8c79dde",
              "created_at": "2026-06-23T11:15:23.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"NewDefault\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain nominee ID",
              "passed": true,
              "message": "Nominee ID present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_072",
          "caseName": "Follow-up list shows only one nominee with is_default=true",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:23.658Z",
          "endedAt": "2026-06-23T11:15:23.731Z",
          "durationMs": 73,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "5805",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"16ad-S3hM/LdewOyYzqfQC9YVcP+wxys\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "70",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "is_default": false,
                "id": 10824,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "07a57f39-14f6-4a68-9a16-3eaa30361d66",
                "first_name": "Madonna",
                "middle_name": "",
                "last_name": ".",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": null,
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:23.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10825,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "042cbf5f-580c-4277-8012-d9f9b4d992bb",
                "first_name": "Phoneuser",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": "9999999998",
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:23.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10826,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "866fa457-a282-425e-af0c-11fe0a0f3d58",
                "first_name": "Emailuser",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": "qa.nominee@example.com",
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:23.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": true,
                "id": 10827,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "86fa2523-60a7-49e8-9e7a-0c33b8c79dde",
                "first_name": "NewDefault",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:23.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10823,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "00498034-d29b-4f19-8d90-25c622d7518c",
                "first_name": "John",
                "middle_name": "A",
                "last_name": "Doe",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": null,
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:22.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10816,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
                "first_name": "Ramesh",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Mother",
                "nominee_salutation": "MRS",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:21.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10819,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "a1e6a085-193a-47e7-af58-bfafb958c7ff",
                "first_name": "Sunita",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Mother",
                "nominee_salutation": "MRS",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:21.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10820,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "8e68596d-2b54-4cd5-bb4d-448e040eadd0",
                "first_name": "Rohan",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Husband",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:21.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10821,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "7b43986f-90fd-416f-a908-b69b20c4c4c9",
                "first_name": "Priya",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1996-02-20",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Daughter",
                "nominee_salutation": "MS",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:21.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10822,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "c7cf88c9-2cd2-4829-b531-12df3548698d",
                "first_name": "Vikram",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "249a22814bf213a7ff2e68cfa58da9d3:590165e106e1a2c8480111854268324f",
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:21.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Exactly one nominee should be marked is_default=true",
              "passed": true,
              "message": "1 default nominee(s) found"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_073",
          "caseName": "Empty nominee_pan is treated as absent (not encrypted)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:23.731Z",
          "endedAt": "2026-06-23T11:15:23.758Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "EmptyPan",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "521",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"209-A4sjsKCUExo/03k7iBkKhJ0Ngy8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "24",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "EmptyPan",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_pan": "",
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10828,
              "f_user_nominee_id": "42601093-00c4-41e8-abff-5d6fe77da73d",
              "created_at": "2026-06-23T11:15:23.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"EmptyPan\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "nominee_pan should be null/falsy when sent as an empty string",
              "passed": true,
              "message": "nominee_pan is empty/null"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_074",
          "caseName": "Lowercase nominee_pan is accepted and stored encrypted",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:23.758Z",
          "endedAt": "2026-06-23T11:15:23.843Z",
          "durationMs": 85,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "LowerPan",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "abcpe1234f",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "586",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"24a-TQsia1PgzAYMVxoeNfZaJPtbTJo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "82",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "LowerPan",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_pan": "249a22814bf213a7ff2e68cfa58da9d3:590165e106e1a2c8480111854268324f",
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10829,
              "f_user_nominee_id": "09fae4b7-0c95-423a-8068-1946c90f3bb1",
              "created_at": "2026-06-23T11:15:23.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"LowerPan\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"abcpe1234f\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Stored nominee_pan should not be returned in plaintext",
              "passed": true,
              "message": "nominee_pan not echoed in plaintext"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_075",
          "caseName": "Extra unknown field in payload is silently ignored",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/user-nominee",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:23.843Z",
          "endedAt": "2026-06-23T11:15:23.927Z",
          "durationMs": 84,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "ExtraField",
            "middle_name": "",
            "last_name": "Kumar",
            "nominee_pan": "",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false,
            "unknown_field": "x"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "523",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"20b-C2NoeJ9PijAKMh5Nt7qqNpyaBms\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "82",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "first_name": "ExtraField",
              "middle_name": "",
              "last_name": "Kumar",
              "nominee_dob": "1990-04-15",
              "nominee_pan": "",
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "nominee_name_consent": null,
              "id": 10830,
              "f_user_nominee_id": "3dac1275-41e7-4aa8-ae85-ae9f08eeecd1",
              "created_at": "2026-06-23T11:15:23.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"ExtraField\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":false,\"unknown_field\":\"x\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain nominee ID",
              "passed": true,
              "message": "Nominee ID present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_080",
          "caseName": "List nominees decrypts nominee_phone when present",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:23.928Z",
          "endedAt": "2026-06-23T11:15:23.941Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "5812",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"16b4-DMF5s8r6wNEJHSewrUx7Y/0s1hE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "is_default": false,
                "id": 10830,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "3dac1275-41e7-4aa8-ae85-ae9f08eeecd1",
                "first_name": "ExtraField",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:23.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10829,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "09fae4b7-0c95-423a-8068-1946c90f3bb1",
                "first_name": "LowerPan",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "249a22814bf213a7ff2e68cfa58da9d3:590165e106e1a2c8480111854268324f",
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:23.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10824,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "07a57f39-14f6-4a68-9a16-3eaa30361d66",
                "first_name": "Madonna",
                "middle_name": "",
                "last_name": ".",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": null,
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:23.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10825,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "042cbf5f-580c-4277-8012-d9f9b4d992bb",
                "first_name": "Phoneuser",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": "9999999998",
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:23.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10826,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "866fa457-a282-425e-af0c-11fe0a0f3d58",
                "first_name": "Emailuser",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": "qa.nominee@example.com",
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:23.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": true,
                "id": 10827,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "86fa2523-60a7-49e8-9e7a-0c33b8c79dde",
                "first_name": "NewDefault",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:23.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10828,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "42601093-00c4-41e8-abff-5d6fe77da73d",
                "first_name": "EmptyPan",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:23.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10823,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "00498034-d29b-4f19-8d90-25c622d7518c",
                "first_name": "John",
                "middle_name": "A",
                "last_name": "Doe",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": null,
                "nominee_name_consent": null,
                "nominee_relation": "Father",
                "nominee_salutation": "MR",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:22.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10816,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
                "first_name": "Ramesh",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Mother",
                "nominee_salutation": "MRS",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:21.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10819,
                "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "a1e6a085-193a-47e7-af58-bfafb958c7ff",
                "first_name": "Sunita",
                "middle_name": "",
                "last_name": "Kumar",
                "nominee_dob": "1990-04-15",
                "nominee_phone": null,
                "nominee_email": null,
                "nominee_pan": "",
                "nominee_name_consent": null,
                "nominee_relation": "Mother",
                "nominee_salutation": "MRS",
                "guardian_first_name": "",
                "guardian_last_name": "",
                "created_at": "2026-06-23T11:15:21.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Any nominee_phone present in the list should be a non-empty decrypted string",
              "passed": true,
              "message": "1 nominee(s) with decrypted phone"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_081",
          "caseName": "List nominees with expired JWT is rejected",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:23.941Z",
          "endedAt": "2026-06-23T11:15:23.947Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer expired.jwt.token"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer expired.jwt.token'",
          "validations": [
            {
              "description": "Should reject with 401 auth error",
              "passed": true,
              "message": "401 \"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_082",
          "caseName": "Create default nominee matching applicant PAN name (for FIXINV165 booking check)",
          "service": "user-services",
          "method": "POST",
          "url": "/api/v1/user-nominee",
          "status": "skipped",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "expectedErrorCodes": [],
          "actualErrorCodes": [],
          "validations": [],
          "skippedReason": "panFirstName not available from PAN verification step"
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_001",
          "caseName": "Create address for nominee (SHRI)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:23.947Z",
          "endedAt": "2026-06-23T11:15:23.970Z",
          "durationMs": 23,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
            "same_as_user": false,
            "line1": "221B Baker Street",
            "line2": "Near Test Lane",
            "area": "Test Area",
            "city": "Mumbai",
            "state": "Maharashtra",
            "country": "INDIA",
            "pincode": "400001",
            "address_type": "PERMANENT"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "636",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"27c-UFlvkyplfEfQtj4CVhODVgHOxn0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "20",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "CREATED",
            "payload": {
              "is_default": false,
              "same_as_user": false,
              "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
              "line2": "Near Test Lane",
              "state": "MAHARASHTRA",
              "country": "INDIA",
              "address_type": "PERMANENT",
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "address_object": "249a22814bf213a7ff2e68cfa58da9d3:7d8f7e7d160711318ed98e9451a3396d1ea9dad6b6ab7c5edcb46bd350dd054cdc9ba7cd39664363c47a604e01361097c88203ec3381ed2955464f7d5d584325389d26ca93cc93cacfc91b26b10731ea13576e0f0f109583c9356d1b139de5c5",
              "id": 5136,
              "f_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-address/for-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\",\"same_as_user\":false,\"line1\":\"221B Baker Street\",\"line2\":\"Near Test Lane\",\"area\":\"Test Area\",\"city\":\"Mumbai\",\"state\":\"Maharashtra\",\"country\":\"INDIA\",\"pincode\":\"400001\",\"address_type\":\"PERMANENT\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Saved address should be linked to the nominee",
              "passed": true,
              "message": "f_user_nominee_id matches nominee"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_002",
          "caseName": "Get nominee address — newly added address is returned",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:23.970Z",
          "endedAt": "2026-06-23T11:15:23.982Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "783",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:23 GMT",
            "etag": "W/\"30f-0uMPOnxKhP3lNmf5yIczTMhHU/E\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 5136,
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
                "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
                "f_base_user_address_id": null,
                "state": "MAHARASHTRA",
                "country": "INDIA",
                "address_type": "PERMANENT",
                "deleted_at": null,
                "address_object": "249a22814bf213a7ff2e68cfa58da9d3:7d8f7e7d160711318ed98e9451a3396d1ea9dad6b6ab7c5edcb46bd350dd054cdc9ba7cd39664363c47a604e01361097c88203ec3381ed2955464f7d5d584325389d26ca93cc93cacfc91b26b10731ea13576e0f0f109583c9356d1b139de5c5",
                "is_default": false,
                "line1": "221B Baker Street",
                "line2": null,
                "line3": null,
                "sub_district": null,
                "street": null,
                "post_office": null,
                "pincode": "400001",
                "area": "Test Area",
                "city": "Mumbai"
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-address/for-nominee?f_user_nominee_id=53dded94-1343-4bcd-be2c-af2294fd797c' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Returned list contains an address for this nominee",
              "passed": true,
              "message": "Nominee address present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_003",
          "caseName": "Create nominee address with same_as_user copies applicant address",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:23.982Z",
          "endedAt": "2026-06-23T11:15:24.056Z",
          "durationMs": 74,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
            "same_as_user": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "654",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"28e-ejoZ7SufYbNqEUejx6/vPdwIhtw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "71",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "CREATED",
            "payload": {
              "id": 5136,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "f_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
              "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
              "f_base_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
              "state": "MAHARASHTRA",
              "country": "INDIA",
              "address_type": "PERMANENT",
              "deleted_at": null,
              "address_object": "249a22814bf213a7ff2e68cfa58da9d3:7d8f7e7d160711318ed98e9451a3396d1ea9dad6b6ab7c5edcb46bd350dd054cdc9ba7cd39664363c47a604e01361097c88203ec3381ed2955464f7d5d584325389d26ca93cc93cacfc91b26b10731ea13576e0f0f109583c9356d1b139de5c5",
              "is_default": false
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-address/for-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\",\"same_as_user\":true}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 201 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_004",
          "caseName": "Get nominee addresses without a nominee filter returns the full address list",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:24.056Z",
          "endedAt": "2026-06-23T11:15:24.129Z",
          "durationMs": 73,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "817",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"331-WtoTMoc835uYrn/0Wy3HkB60gEA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "70",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 5136,
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
                "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
                "f_base_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
                "state": "MAHARASHTRA",
                "country": "INDIA",
                "address_type": "PERMANENT",
                "deleted_at": null,
                "address_object": "249a22814bf213a7ff2e68cfa58da9d3:7d8f7e7d160711318ed98e9451a3396d1ea9dad6b6ab7c5edcb46bd350dd054cdc9ba7cd39664363c47a604e01361097c88203ec3381ed2955464f7d5d584325389d26ca93cc93cacfc91b26b10731ea13576e0f0f109583c9356d1b139de5c5",
                "is_default": false,
                "line1": "221B Baker Street",
                "line2": null,
                "line3": null,
                "sub_district": null,
                "street": null,
                "post_office": null,
                "pincode": "400001",
                "area": "Test Area",
                "city": "Mumbai"
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-address/for-nominee' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Response payload is an array",
              "passed": true,
              "message": "Address list is array"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_005",
          "caseName": "Get nominee address for an unknown nominee id returns an empty list",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:24.129Z",
          "endedAt": "2026-06-23T11:15:24.140Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "f_user_nominee_id": "11111111-2222-4333-8444-555555555555"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "63",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"3f-oCPC8DEMdT63LEPOmlpkObbO8j8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": []
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-address/for-nominee?f_user_nominee_id=11111111-2222-4333-8444-555555555555' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Returned list contains no address for an unknown nominee id",
              "passed": true,
              "message": "No address for unknown nominee id"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_006",
          "caseName": "Create nominee address without auth is rejected",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:24.140Z",
          "endedAt": "2026-06-23T11:15:24.146Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "same_as_user": false,
            "line1": "Test",
            "city": "Mumbai",
            "state": "MH",
            "pincode": "400001"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-address/for-nominee' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"same_as_user\":false,\"line1\":\"Test\",\"city\":\"Mumbai\",\"state\":\"MH\",\"pincode\":\"400001\"}'",
          "validations": [
            {
              "description": "Should reject with 401 auth error",
              "passed": true,
              "message": "401 \"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_007",
          "caseName": "Get nominee address without auth is rejected",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:24.146Z",
          "endedAt": "2026-06-23T11:15:24.152Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "169",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"a9-ra1+G8sgf4WPH3Nd3PzEHUQT2fc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-address/for-nominee' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Should reject with 401 auth error",
              "passed": true,
              "message": "401 \"x-partner-key is required\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_008",
          "caseName": "Create nominee address missing f_user_nominee_id is rejected",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:24.152Z",
          "endedAt": "2026-06-23T11:15:24.164Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "same_as_user": true
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"c4-jXRSsJpXnefE69VSOX4YYjFj9Hs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXUSER1090",
                "error": "Nominee Id is required to add address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-address/for-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"same_as_user\":true}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1090",
              "passed": true,
              "message": "FIXUSER1090 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1090"
          ],
          "actualErrorCodes": [
            "FIXUSER1090"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_009",
          "caseName": "Create nominee address with non-numeric pincode is rejected",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:24.165Z",
          "endedAt": "2026-06-23T11:15:24.227Z",
          "durationMs": 62,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
            "same_as_user": false,
            "line1": "Flat 1",
            "city": "Mumbai",
            "state": "MH",
            "country": "INDIA",
            "pincode": "ABC"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "59",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-address/for-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\",\"same_as_user\":false,\"line1\":\"Flat 1\",\"city\":\"Mumbai\",\"state\":\"MH\",\"country\":\"INDIA\",\"pincode\":\"ABC\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_010",
          "caseName": "state field is uppercased before save",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:24.227Z",
          "endedAt": "2026-06-23T11:15:24.250Z",
          "durationMs": 23,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
            "same_as_user": false,
            "line1": "Flat 1",
            "city": "Mumbai",
            "state": "maharashtra",
            "country": "INDIA",
            "pincode": "400001"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "590",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"24e-G8DHHzIwGfgaxZT3JEfAp07H82w\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "20",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "CREATED",
            "payload": {
              "id": 5136,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "f_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
              "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
              "f_base_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
              "state": "MAHARASHTRA",
              "country": "INDIA",
              "address_type": "PERMANENT",
              "deleted_at": null,
              "address_object": "249a22814bf213a7ff2e68cfa58da9d3:7d8f7e7d160711318ed98e9451a3396d2cca1851e2d26e8d57fff28ea4e76fcd51c0f93ca466b3eb14c071b755a1c0cc14a61bc459f0c8c34c0d9e8a372629f7",
              "is_default": false
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-address/for-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\",\"same_as_user\":false,\"line1\":\"Flat 1\",\"city\":\"Mumbai\",\"state\":\"maharashtra\",\"country\":\"INDIA\",\"pincode\":\"400001\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Returned state should be uppercased",
              "passed": true,
              "message": "state uppercased"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_011",
          "caseName": "country defaults to INDIA when omitted",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:24.250Z",
          "endedAt": "2026-06-23T11:15:24.284Z",
          "durationMs": 34,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
            "same_as_user": false,
            "line1": "Flat 1",
            "city": "Mumbai",
            "state": "MH",
            "pincode": "400001"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "581",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"245-Gcr1+7Im2I6gibykj1xR45y8h/w\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "31",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "CREATED",
            "payload": {
              "id": 5136,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "f_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
              "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
              "f_base_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
              "state": "MH",
              "country": "INDIA",
              "address_type": "PERMANENT",
              "deleted_at": null,
              "address_object": "249a22814bf213a7ff2e68cfa58da9d3:7d8f7e7d160711318ed98e9451a3396d2cca1851e2d26e8d57fff28ea4e76fcd51c0f93ca466b3eb14c071b755a1c0cc14a61bc459f0c8c34c0d9e8a372629f7",
              "is_default": false
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-address/for-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\",\"same_as_user\":false,\"line1\":\"Flat 1\",\"city\":\"Mumbai\",\"state\":\"MH\",\"pincode\":\"400001\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "country should default to INDIA",
              "passed": true,
              "message": "country=INDIA"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_012",
          "caseName": "Repeated create for same nominee upserts instead of duplicating",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 201,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:15:24.284Z",
          "endedAt": "2026-06-23T11:15:24.335Z",
          "durationMs": 51,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
            "same_as_user": false,
            "line1": "Updated Address Line",
            "city": "Pune",
            "state": "MH",
            "country": "INDIA",
            "pincode": "411001"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "613",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"265-L/W6Y38VatrX+ypY8iMvLlfwYk0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "47",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "CREATED",
            "payload": {
              "id": 5136,
              "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "f_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
              "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
              "f_base_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
              "state": "MH",
              "country": "INDIA",
              "address_type": "PERMANENT",
              "deleted_at": null,
              "address_object": "249a22814bf213a7ff2e68cfa58da9d3:7d8f7e7d160711318ed98e9451a3396d8068d362432ecd619d2d01b0dad5f7e8e4dc71110013a83ee2892dff3df63e86a317c00f1d81cf0c00121861b48906d1b3ea0cf3795afda8fc1a09ecc208976a",
              "is_default": false
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-address/for-nominee?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\",\"same_as_user\":false,\"line1\":\"Updated Address Line\",\"city\":\"Pune\",\"state\":\"MH\",\"country\":\"INDIA\",\"pincode\":\"411001\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 201 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_ADDR_013",
          "caseName": "Get nominee address after upsert returns exactly one record for the nominee",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/user-address/for-nominee",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:24.335Z",
          "endedAt": "2026-06-23T11:15:24.347Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestQuery": {
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "770",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"302-egXzt9nafLOmnw/duVIqN1CVitg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 5136,
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
                "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
                "f_base_user_address_id": "7a963028-227d-4fed-a933-c10d47ae7cd4",
                "state": "MH",
                "country": "INDIA",
                "address_type": "PERMANENT",
                "deleted_at": null,
                "address_object": "249a22814bf213a7ff2e68cfa58da9d3:7d8f7e7d160711318ed98e9451a3396d8068d362432ecd619d2d01b0dad5f7e8e4dc71110013a83ee2892dff3df63e86a317c00f1d81cf0c00121861b48906d1b3ea0cf3795afda8fc1a09ecc208976a",
                "is_default": false,
                "line1": "Updated Address Line",
                "line2": null,
                "line3": null,
                "sub_district": null,
                "street": null,
                "post_office": null,
                "pincode": "411001",
                "area": null,
                "city": "Pune"
              }
            ]
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-address/for-nominee?f_user_nominee_id=53dded94-1343-4bcd-be2c-af2294fd797c' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Upsert should not create a duplicate address row for this nominee",
              "passed": true,
              "message": "1 address row(s) for nominee"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_001",
          "caseName": "Update nominee via v1/update (SHRI)",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:24.347Z",
          "endedAt": "2026-06-23T11:15:24.375Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "test",
            "middle_name": "",
            "last_name": ".",
            "nominee_pan": "",
            "nominee_dob": "2005-11-21",
            "nominee_relation": "Mother",
            "nominee_salutation": "MR",
            "is_default": true,
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "643",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"283-06boROO+y+MHbbgvIx+MSZJ0oXs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "25",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Nominee Data updated successfully",
            "payload": {
              "is_default": true,
              "id": 10816,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
              "first_name": "test",
              "middle_name": "",
              "last_name": ".",
              "nominee_dob": "2005-11-21",
              "nominee_phone": null,
              "nominee_email": null,
              "nominee_pan": "",
              "nominee_name_consent": null,
              "nominee_relation": "Mother",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "created_at": "2026-06-23T11:15:21.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"test\",\"middle_name\":\"\",\"last_name\":\".\",\"nominee_pan\":\"\",\"nominee_dob\":\"2005-11-21\",\"nominee_relation\":\"Mother\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\"}'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Updated nominee id should match request",
              "passed": true,
              "message": "f_user_nominee_id matches"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER_NOMINEE_V1_UPDATE.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_002",
          "caseName": "Update nominee via v1/update with nomineeAddress upserts the address",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:24.376Z",
          "endedAt": "2026-06-23T11:15:24.469Z",
          "durationMs": 93,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "test",
            "middle_name": "",
            "last_name": ".",
            "nominee_pan": "",
            "nominee_dob": "2005-11-21",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true,
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
            "nomineeAddress": {
              "same_as_user": false,
              "line1": "ADFJ",
              "street": "ASDFK",
              "pincode": "431122",
              "city": "BEED",
              "state": "MAHARASHTRA",
              "country": "INDIA"
            }
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1078",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"436-1f9hA4AsHG5yum2kaxpGDg1bAS0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "91",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Nominee Data updated successfully",
            "payload": {
              "is_default": true,
              "id": 10816,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
              "first_name": "test",
              "middle_name": "",
              "last_name": ".",
              "nominee_dob": "2005-11-21",
              "nominee_phone": null,
              "nominee_email": null,
              "nominee_pan": "",
              "nominee_name_consent": null,
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "created_at": "2026-06-23T11:15:21.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": null,
              "nomineeAddress": {
                "same_as_user": false,
                "state": "MAHARASHTRA",
                "country": "INDIA",
                "address_object": "249a22814bf213a7ff2e68cfa58da9d3:7d8f7e7d160711318ed98e9451a3396d67d8e56acb6a0037d70a856eb75e370a3e1608bd6960ad20a42428b87b82f01be86f7a24a27f69e4d4a476e892feb93819f43422c1405c9eaf47a2db0588fc01f80f14dadec1a1639c56890f969cbf0c",
                "f_user_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
                "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
              }
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"test\",\"middle_name\":\"\",\"last_name\":\".\",\"nominee_pan\":\"\",\"nominee_dob\":\"2005-11-21\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\",\"nomineeAddress\":{\"same_as_user\":false,\"line1\":\"ADFJ\",\"street\":\"ASDFK\",\"pincode\":\"431122\",\"city\":\"BEED\",\"state\":\"MAHARASHTRA\",\"country\":\"INDIA\"}}'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_005",
          "caseName": "Reject first_name with invalid characters",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:24.469Z",
          "endedAt": "2026-06-23T11:15:24.480Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "Te$t",
            "middle_name": "",
            "last_name": ".",
            "nominee_pan": "",
            "nominee_dob": "2005-11-21",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true,
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "196",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"c4-X6XMD/1SiqZk3SZQkx9MAL+TIlU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1069",
                "error": "Please enter a valid nominee first name"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"Te$t\",\"middle_name\":\"\",\"last_name\":\".\",\"nominee_pan\":\"\",\"nominee_dob\":\"2005-11-21\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1069",
              "passed": true,
              "message": "FIXUSER1069 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1069"
          ],
          "actualErrorCodes": [
            "FIXUSER1069"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_006",
          "caseName": "Reject middle_name with invalid characters",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:24.480Z",
          "endedAt": "2026-06-23T11:15:24.528Z",
          "durationMs": 48,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "test",
            "middle_name": "A1",
            "last_name": ".",
            "nominee_pan": "",
            "nominee_dob": "2005-11-21",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true,
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "197",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"c5-nkE2baDfMZRG8VK0+mhypSY/cP8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "45",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1205",
                "error": "Please enter a valid nominee middle name"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"test\",\"middle_name\":\"A1\",\"last_name\":\".\",\"nominee_pan\":\"\",\"nominee_dob\":\"2005-11-21\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1205",
              "passed": true,
              "message": "FIXUSER1205 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1205"
          ],
          "actualErrorCodes": [
            "FIXUSER1205"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_007",
          "caseName": "Reject last_name with invalid characters",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:24.528Z",
          "endedAt": "2026-06-23T11:15:24.538Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "test",
            "middle_name": "",
            "last_name": "D0e",
            "nominee_pan": "",
            "nominee_dob": "2005-11-21",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true,
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "195",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"c3-X/VCKSzEyRS2kQq2r3JvtQMi7nA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1356",
                "error": "Please enter a valid nominee last name"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"test\",\"middle_name\":\"\",\"last_name\":\"D0e\",\"nominee_pan\":\"\",\"nominee_dob\":\"2005-11-21\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1356",
              "passed": true,
              "message": "FIXUSER1356 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1356"
          ],
          "actualErrorCodes": [
            "FIXUSER1356"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_008",
          "caseName": "Reject invalid nominee_dob",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:24.539Z",
          "endedAt": "2026-06-23T11:15:24.549Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "test",
            "middle_name": "",
            "last_name": ".",
            "nominee_pan": "",
            "nominee_dob": "not-a-date",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true,
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "202",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"ca-eiW3jCKud9aQN9u5BBubRqxLIjc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1072",
                "error": "Please enter a valid nominee DOB (YYYY-MM-DD)"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"test\",\"middle_name\":\"\",\"last_name\":\".\",\"nominee_pan\":\"\",\"nominee_dob\":\"not-a-date\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1072",
              "passed": true,
              "message": "FIXUSER1072 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1072"
          ],
          "actualErrorCodes": [
            "FIXUSER1072"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_009",
          "caseName": "Reject future nominee_dob",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:24.549Z",
          "endedAt": "2026-06-23T11:15:24.559Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "test",
            "middle_name": "",
            "last_name": ".",
            "nominee_pan": "",
            "nominee_dob": "2999-01-01",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true,
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "194",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"c2-ue3VX43dASmbpm+YepGpr2KuIH4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1094",
                "error": "Date of birth cannot be in the future"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"test\",\"middle_name\":\"\",\"last_name\":\".\",\"nominee_pan\":\"\",\"nominee_dob\":\"2999-01-01\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1094",
              "passed": true,
              "message": "FIXUSER1094 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1094"
          ],
          "actualErrorCodes": [
            "FIXUSER1094"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_010",
          "caseName": "Reject invalid nominee_relation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:24.559Z",
          "endedAt": "2026-06-23T11:15:24.627Z",
          "durationMs": 68,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "test",
            "middle_name": "",
            "last_name": ".",
            "nominee_pan": "",
            "nominee_dob": "2005-11-21",
            "nominee_relation": "Cousin",
            "nominee_salutation": "MR",
            "is_default": true,
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "190",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"be-OjnPZp7BitXUvDxYGkRz6nke5Tw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "64",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1071",
                "error": "Nominee relation should be string"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"test\",\"middle_name\":\"\",\"last_name\":\".\",\"nominee_pan\":\"\",\"nominee_dob\":\"2005-11-21\",\"nominee_relation\":\"Cousin\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1071",
              "passed": true,
              "message": "FIXUSER1071 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1071"
          ],
          "actualErrorCodes": [
            "FIXUSER1071"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_011",
          "caseName": "Reject invalid nominee_salutation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:15:24.627Z",
          "endedAt": "2026-06-23T11:15:24.652Z",
          "durationMs": 25,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "test",
            "middle_name": "",
            "last_name": ".",
            "nominee_pan": "",
            "nominee_dob": "2005-11-21",
            "nominee_relation": "Father",
            "nominee_salutation": "DR",
            "is_default": true,
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "192",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"c0-4Kbf/SiUHV6/UZ/WEtYqXa6sxh4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "21",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1077",
                "error": "Nominee salutation should be string"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"test\",\"middle_name\":\"\",\"last_name\":\".\",\"nominee_pan\":\"\",\"nominee_dob\":\"2005-11-21\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"DR\",\"is_default\":true,\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\"}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain error code FIXUSER1077",
              "passed": true,
              "message": "FIXUSER1077 present"
            }
          ],
          "expectedErrorCodes": [
            "FIXUSER1077"
          ],
          "actualErrorCodes": [
            "FIXUSER1077"
          ]
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_012",
          "caseName": "PAN provided lowercase is accepted and stored encrypted",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:15:24.652Z",
          "endedAt": "2026-06-23T11:15:24.735Z",
          "durationMs": 83,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw"
          },
          "requestPayload": {
            "first_name": "test",
            "middle_name": "",
            "last_name": ".",
            "nominee_pan": "abcpe1234f",
            "nominee_dob": "2005-11-21",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": true,
            "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c"
          },
          "requestQuery": {
            "f_code": "SHRI"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "708",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"2c4-HQQvmItHNVjyGuz0ytJ5q8P2aHY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "80",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Nominee Data updated successfully",
            "payload": {
              "is_default": true,
              "id": 10816,
              "f_user_ref_id": "db6a1b09-2421-42b1-ba92-f4afb2cbfbe4",
              "f_user_nominee_id": "53dded94-1343-4bcd-be2c-af2294fd797c",
              "first_name": "test",
              "middle_name": "",
              "last_name": ".",
              "nominee_dob": "2005-11-21",
              "nominee_phone": null,
              "nominee_email": null,
              "nominee_pan": "249a22814bf213a7ff2e68cfa58da9d3:590165e106e1a2c8480111854268324f",
              "nominee_name_consent": null,
              "nominee_relation": "Father",
              "nominee_salutation": "MR",
              "guardian_first_name": "",
              "guardian_last_name": "",
              "created_at": "2026-06-23T11:15:21.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=SHRI' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJkYjZhMWIwOS0yNDIxLTQyYjEtYmE5Mi1mNGFmYjJjYmZiZTQiLCJmX3BhcnRuZXJfdXNlcl9pZCI6Ijc5NjA2MjhmLTRlYzgtNGQ5Mi05YjY4LWY4NjU2N2I4YWY4NCIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjU1LCJleHAiOjE3ODIyOTk2NTV9.xi4DPoZSIWQW4XzpAy-D-c6_0fos1p5XetXonxoMnPw' \\\n  -d '{\"first_name\":\"test\",\"middle_name\":\"\",\"last_name\":\".\",\"nominee_pan\":\"abcpe1234f\",\"nominee_dob\":\"2005-11-21\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true,\"f_user_nominee_id\":\"53dded94-1343-4bcd-be2c-af2294fd797c\"}'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Stored nominee_pan should not be returned in plaintext",
              "passed": true,
              "message": "nominee_pan not echoed in plaintext"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_015",
          "caseName": "Update via v1/update without auth is rejected",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:24.735Z",
          "endedAt": "2026-06-23T11:15:24.740Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "f_user_nominee_id": "11111111-2222-4333-8444-555555555555"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"f_user_nominee_id\":\"11111111-2222-4333-8444-555555555555\"}'",
          "validations": [
            {
              "description": "Should reject with 401 auth error",
              "passed": true,
              "message": "401 \"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "SHRI_NOMINEE_V1UPD_016",
          "caseName": "Update via v1/update with expired JWT is rejected",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/v1/update",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:15:24.740Z",
          "endedAt": "2026-06-23T11:15:24.745Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer expired.jwt.token"
          },
          "requestPayload": {
            "f_user_nominee_id": "11111111-2222-4333-8444-555555555555"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:15:24 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer expired.jwt.token' \\\n  -d '{\"f_user_nominee_id\":\"11111111-2222-4333-8444-555555555555\"}'",
          "validations": [
            {
              "description": "Should reject with 401 auth error",
              "passed": true,
              "message": "401 \"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        }
      ],
      "summary": {
        "total": 82,
        "passed": 80,
        "failed": 0,
        "skipped": 2,
        "running": 0,
        "pending": 0,
        "durationMs": 3763
      }
    }
  ]
}